summaryrefslogtreecommitdiffhomepage
path: root/vendor/golang.org/x/text/internal
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/text/internal')
-rw-r--r--vendor/golang.org/x/text/internal/catmsg/catmsg.go417
-rw-r--r--vendor/golang.org/x/text/internal/catmsg/codec.go407
-rw-r--r--vendor/golang.org/x/text/internal/catmsg/varint.go62
-rw-r--r--vendor/golang.org/x/text/internal/colltab/collelem.go376
-rw-r--r--vendor/golang.org/x/text/internal/colltab/colltab.go105
-rw-r--r--vendor/golang.org/x/text/internal/colltab/contract.go145
-rw-r--r--vendor/golang.org/x/text/internal/colltab/iter.go178
-rw-r--r--vendor/golang.org/x/text/internal/colltab/numeric.go236
-rw-r--r--vendor/golang.org/x/text/internal/colltab/table.go275
-rw-r--r--vendor/golang.org/x/text/internal/colltab/trie.go159
-rw-r--r--vendor/golang.org/x/text/internal/colltab/weighter.go31
-rw-r--r--vendor/golang.org/x/text/internal/format/format.go41
-rw-r--r--vendor/golang.org/x/text/internal/format/parser.go358
-rw-r--r--vendor/golang.org/x/text/internal/gen/code.go375
-rw-r--r--vendor/golang.org/x/text/internal/gen/gen.go354
-rw-r--r--vendor/golang.org/x/text/internal/internal.go49
-rw-r--r--vendor/golang.org/x/text/internal/language/common.go16
-rw-r--r--vendor/golang.org/x/text/internal/language/compact.go29
-rw-r--r--vendor/golang.org/x/text/internal/language/compact/compact.go61
-rw-r--r--vendor/golang.org/x/text/internal/language/compact/language.go260
-rw-r--r--vendor/golang.org/x/text/internal/language/compact/parents.go120
-rw-r--r--vendor/golang.org/x/text/internal/language/compact/tables.go1015
-rw-r--r--vendor/golang.org/x/text/internal/language/compact/tags.go91
-rw-r--r--vendor/golang.org/x/text/internal/language/compose.go167
-rw-r--r--vendor/golang.org/x/text/internal/language/coverage.go28
-rw-r--r--vendor/golang.org/x/text/internal/language/language.go627
-rw-r--r--vendor/golang.org/x/text/internal/language/lookup.go412
-rw-r--r--vendor/golang.org/x/text/internal/language/match.go226
-rw-r--r--vendor/golang.org/x/text/internal/language/parse.go608
-rw-r--r--vendor/golang.org/x/text/internal/language/tables.go3494
-rw-r--r--vendor/golang.org/x/text/internal/language/tags.go48
-rw-r--r--vendor/golang.org/x/text/internal/match.go67
-rw-r--r--vendor/golang.org/x/text/internal/number/common.go55
-rw-r--r--vendor/golang.org/x/text/internal/number/decimal.go500
-rw-r--r--vendor/golang.org/x/text/internal/number/format.go535
-rw-r--r--vendor/golang.org/x/text/internal/number/number.go152
-rw-r--r--vendor/golang.org/x/text/internal/number/pattern.go485
-rw-r--r--vendor/golang.org/x/text/internal/number/roundingmode_string.go30
-rw-r--r--vendor/golang.org/x/text/internal/number/tables.go1219
-rw-r--r--vendor/golang.org/x/text/internal/stringset/set.go86
-rw-r--r--vendor/golang.org/x/text/internal/tag/tag.go100
41 files changed, 0 insertions, 13999 deletions
diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg.go b/vendor/golang.org/x/text/internal/catmsg/catmsg.go
deleted file mode 100644
index 1b257a7..0000000
--- a/vendor/golang.org/x/text/internal/catmsg/catmsg.go
+++ /dev/null
@@ -1,417 +0,0 @@
-// Copyright 2017 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 catmsg contains support types for package x/text/message/catalog.
-//
-// This package contains the low-level implementations of Message used by the
-// catalog package and provides primitives for other packages to implement their
-// own. For instance, the plural package provides functionality for selecting
-// translation strings based on the plural category of substitution arguments.
-//
-// # Encoding and Decoding
-//
-// Catalogs store Messages encoded as a single string. Compiling a message into
-// a string both results in compacter representation and speeds up evaluation.
-//
-// A Message must implement a Compile method to convert its arbitrary
-// representation to a string. The Compile method takes an Encoder which
-// facilitates serializing the message. Encoders also provide more context of
-// the messages's creation (such as for which language the message is intended),
-// which may not be known at the time of the creation of the message.
-//
-// Each message type must also have an accompanying decoder registered to decode
-// the message. This decoder takes a Decoder argument which provides the
-// counterparts for the decoding.
-//
-// # Renderers
-//
-// A Decoder must be initialized with a Renderer implementation. These
-// implementations must be provided by packages that use Catalogs, typically
-// formatting packages such as x/text/message. A typical user will not need to
-// worry about this type; it is only relevant to packages that do string
-// formatting and want to use the catalog package to handle localized strings.
-//
-// A package that uses catalogs for selecting strings receives selection results
-// as sequence of substrings passed to the Renderer. The following snippet shows
-// how to express the above example using the message package.
-//
-// message.Set(language.English, "You are %d minute(s) late.",
-// catalog.Var("minutes", plural.Select(1, "one", "minute")),
-// catalog.String("You are %[1]d ${minutes} late."))
-//
-// p := message.NewPrinter(language.English)
-// p.Printf("You are %d minute(s) late.", 5) // always 5 minutes late.
-//
-// To evaluate the Printf, package message wraps the arguments in a Renderer
-// that is passed to the catalog for message decoding. The call sequence that
-// results from evaluating the above message, assuming the person is rather
-// tardy, is:
-//
-// Render("You are %[1]d ")
-// Arg(1)
-// Render("minutes")
-// Render(" late.")
-//
-// The calls to Arg is caused by the plural.Select execution, which evaluates
-// the argument to determine whether the singular or plural message form should
-// be selected. The calls to Render reports the partial results to the message
-// package for further evaluation.
-package catmsg
-
-import (
- "errors"
- "fmt"
- "strconv"
- "strings"
- "sync"
-
- "golang.org/x/text/language"
-)
-
-// A Handle refers to a registered message type.
-type Handle int
-
-// A Handler decodes and evaluates data compiled by a Message and sends the
-// result to the Decoder. The output may depend on the value of the substitution
-// arguments, accessible by the Decoder's Arg method. The Handler returns false
-// if there is no translation for the given substitution arguments.
-type Handler func(d *Decoder) bool
-
-// Register records the existence of a message type and returns a Handle that
-// can be used in the Encoder's EncodeMessageType method to create such
-// messages. The prefix of the name should be the package path followed by
-// an optional disambiguating string.
-// Register will panic if a handle for the same name was already registered.
-func Register(name string, handler Handler) Handle {
- mutex.Lock()
- defer mutex.Unlock()
-
- if _, ok := names[name]; ok {
- panic(fmt.Errorf("catmsg: handler for %q already exists", name))
- }
- h := Handle(len(handlers))
- names[name] = h
- handlers = append(handlers, handler)
- return h
-}
-
-// These handlers require fixed positions in the handlers slice.
-const (
- msgVars Handle = iota
- msgFirst
- msgRaw
- msgString
- msgAffix
- // Leave some arbitrary room for future expansion: 20 should suffice.
- numInternal = 20
-)
-
-const prefix = "golang.org/x/text/internal/catmsg."
-
-var (
- // TODO: find a more stable way to link handles to message types.
- mutex sync.Mutex
- names = map[string]Handle{
- prefix + "Vars": msgVars,
- prefix + "First": msgFirst,
- prefix + "Raw": msgRaw,
- prefix + "String": msgString,
- prefix + "Affix": msgAffix,
- }
- handlers = make([]Handler, numInternal)
-)
-
-func init() {
- // This handler is a message type wrapper that initializes a decoder
- // with a variable block. This message type, if present, is always at the
- // start of an encoded message.
- handlers[msgVars] = func(d *Decoder) bool {
- blockSize := int(d.DecodeUint())
- d.vars = d.data[:blockSize]
- d.data = d.data[blockSize:]
- return d.executeMessage()
- }
-
- // First takes the first message in a sequence that results in a match for
- // the given substitution arguments.
- handlers[msgFirst] = func(d *Decoder) bool {
- for !d.Done() {
- if d.ExecuteMessage() {
- return true
- }
- }
- return false
- }
-
- handlers[msgRaw] = func(d *Decoder) bool {
- d.Render(d.data)
- return true
- }
-
- // A String message alternates between a string constant and a variable
- // substitution.
- handlers[msgString] = func(d *Decoder) bool {
- for !d.Done() {
- if str := d.DecodeString(); str != "" {
- d.Render(str)
- }
- if d.Done() {
- break
- }
- d.ExecuteSubstitution()
- }
- return true
- }
-
- handlers[msgAffix] = func(d *Decoder) bool {
- // TODO: use an alternative method for common cases.
- prefix := d.DecodeString()
- suffix := d.DecodeString()
- if prefix != "" {
- d.Render(prefix)
- }
- ret := d.ExecuteMessage()
- if suffix != "" {
- d.Render(suffix)
- }
- return ret
- }
-}
-
-var (
- // ErrIncomplete indicates a compiled message does not define translations
- // for all possible argument values. If this message is returned, evaluating
- // a message may result in the ErrNoMatch error.
- ErrIncomplete = errors.New("catmsg: incomplete message; may not give result for all inputs")
-
- // ErrNoMatch indicates no translation message matched the given input
- // parameters when evaluating a message.
- ErrNoMatch = errors.New("catmsg: no translation for inputs")
-)
-
-// A Message holds a collection of translations for the same phrase that may
-// vary based on the values of substitution arguments.
-type Message interface {
- // Compile encodes the format string(s) of the message as a string for later
- // evaluation.
- //
- // The first call Compile makes on the encoder must be EncodeMessageType.
- // The handle passed to this call may either be a handle returned by
- // Register to encode a single custom message, or HandleFirst followed by
- // a sequence of calls to EncodeMessage.
- //
- // Compile must return ErrIncomplete if it is possible for evaluation to
- // not match any translation for a given set of formatting parameters.
- // For example, selecting a translation based on plural form may not yield
- // a match if the form "Other" is not one of the selectors.
- //
- // Compile may return any other application-specific error. For backwards
- // compatibility with package like fmt, which often do not do sanity
- // checking of format strings ahead of time, Compile should still make an
- // effort to have some sensible fallback in case of an error.
- Compile(e *Encoder) error
-}
-
-// Compile converts a Message to a data string that can be stored in a Catalog.
-// The resulting string can subsequently be decoded by passing to the Execute
-// method of a Decoder.
-func Compile(tag language.Tag, macros Dictionary, m Message) (data string, err error) {
- // TODO: pass macros so they can be used for validation.
- v := &Encoder{inBody: true} // encoder for variables
- v.root = v
- e := &Encoder{root: v, parent: v, tag: tag} // encoder for messages
- err = m.Compile(e)
- // This package serves te message package, which in turn is meant to be a
- // drop-in replacement for fmt. With the fmt package, format strings are
- // evaluated lazily and errors are handled by substituting strings in the
- // result, rather then returning an error. Dealing with multiple languages
- // makes it more important to check errors ahead of time. We chose to be
- // consistent and compatible and allow graceful degradation in case of
- // errors.
- buf := e.buf[stripPrefix(e.buf):]
- if len(v.buf) > 0 {
- // Prepend variable block.
- b := make([]byte, 1+maxVarintBytes+len(v.buf)+len(buf))
- b[0] = byte(msgVars)
- b = b[:1+encodeUint(b[1:], uint64(len(v.buf)))]
- b = append(b, v.buf...)
- b = append(b, buf...)
- buf = b
- }
- if err == nil {
- err = v.err
- }
- return string(buf), err
-}
-
-// FirstOf is a message type that prints the first message in the sequence that
-// resolves to a match for the given substitution arguments.
-type FirstOf []Message
-
-// Compile implements Message.
-func (s FirstOf) Compile(e *Encoder) error {
- e.EncodeMessageType(msgFirst)
- err := ErrIncomplete
- for i, m := range s {
- if err == nil {
- return fmt.Errorf("catalog: message argument %d is complete and blocks subsequent messages", i-1)
- }
- err = e.EncodeMessage(m)
- }
- return err
-}
-
-// Var defines a message that can be substituted for a placeholder of the same
-// name. If an expression does not result in a string after evaluation, Name is
-// used as the substitution. For example:
-//
-// Var{
-// Name: "minutes",
-// Message: plural.Select(1, "one", "minute"),
-// }
-//
-// will resolve to minute for singular and minutes for plural forms.
-type Var struct {
- Name string
- Message Message
-}
-
-var errIsVar = errors.New("catmsg: variable used as message")
-
-// Compile implements Message.
-//
-// Note that this method merely registers a variable; it does not create an
-// encoded message.
-func (v *Var) Compile(e *Encoder) error {
- if err := e.addVar(v.Name, v.Message); err != nil {
- return err
- }
- // Using a Var by itself is an error. If it is in a sequence followed by
- // other messages referring to it, this error will be ignored.
- return errIsVar
-}
-
-// Raw is a message consisting of a single format string that is passed as is
-// to the Renderer.
-//
-// Note that a Renderer may still do its own variable substitution.
-type Raw string
-
-// Compile implements Message.
-func (r Raw) Compile(e *Encoder) (err error) {
- e.EncodeMessageType(msgRaw)
- // Special case: raw strings don't have a size encoding and so don't use
- // EncodeString.
- e.buf = append(e.buf, r...)
- return nil
-}
-
-// String is a message consisting of a single format string which contains
-// placeholders that may be substituted with variables.
-//
-// Variable substitutions are marked with placeholders and a variable name of
-// the form ${name}. Any other substitutions such as Go templates or
-// printf-style substitutions are left to be done by the Renderer.
-//
-// When evaluation a string interpolation, a Renderer will receive separate
-// calls for each placeholder and interstitial string. For example, for the
-// message: "%[1]v ${invites} %[2]v to ${their} party." The sequence of calls
-// is:
-//
-// d.Render("%[1]v ")
-// d.Arg(1)
-// d.Render(resultOfInvites)
-// d.Render(" %[2]v to ")
-// d.Arg(2)
-// d.Render(resultOfTheir)
-// d.Render(" party.")
-//
-// where the messages for "invites" and "their" both use a plural.Select
-// referring to the first argument.
-//
-// Strings may also invoke macros. Macros are essentially variables that can be
-// reused. Macros may, for instance, be used to make selections between
-// different conjugations of a verb. See the catalog package description for an
-// overview of macros.
-type String string
-
-// Compile implements Message. It parses the placeholder formats and returns
-// any error.
-func (s String) Compile(e *Encoder) (err error) {
- msg := string(s)
- const subStart = "${"
- hasHeader := false
- p := 0
- b := []byte{}
- for {
- i := strings.Index(msg[p:], subStart)
- if i == -1 {
- break
- }
- b = append(b, msg[p:p+i]...)
- p += i + len(subStart)
- if i = strings.IndexByte(msg[p:], '}'); i == -1 {
- b = append(b, "$!(MISSINGBRACE)"...)
- err = fmt.Errorf("catmsg: missing '}'")
- p = len(msg)
- break
- }
- name := strings.TrimSpace(msg[p : p+i])
- if q := strings.IndexByte(name, '('); q == -1 {
- if !hasHeader {
- hasHeader = true
- e.EncodeMessageType(msgString)
- }
- e.EncodeString(string(b))
- e.EncodeSubstitution(name)
- b = b[:0]
- } else if j := strings.IndexByte(name[q:], ')'); j == -1 {
- // TODO: what should the error be?
- b = append(b, "$!(MISSINGPAREN)"...)
- err = fmt.Errorf("catmsg: missing ')'")
- } else if x, sErr := strconv.ParseUint(strings.TrimSpace(name[q+1:q+j]), 10, 32); sErr != nil {
- // TODO: handle more than one argument
- b = append(b, "$!(BADNUM)"...)
- err = fmt.Errorf("catmsg: invalid number %q", strings.TrimSpace(name[q+1:q+j]))
- } else {
- if !hasHeader {
- hasHeader = true
- e.EncodeMessageType(msgString)
- }
- e.EncodeString(string(b))
- e.EncodeSubstitution(name[:q], int(x))
- b = b[:0]
- }
- p += i + 1
- }
- b = append(b, msg[p:]...)
- if !hasHeader {
- // Simplify string to a raw string.
- Raw(string(b)).Compile(e)
- } else if len(b) > 0 {
- e.EncodeString(string(b))
- }
- return err
-}
-
-// Affix is a message that adds a prefix and suffix to another message.
-// This is mostly used add back whitespace to a translation that was stripped
-// before sending it out.
-type Affix struct {
- Message Message
- Prefix string
- Suffix string
-}
-
-// Compile implements Message.
-func (a Affix) Compile(e *Encoder) (err error) {
- // TODO: consider adding a special message type that just adds a single
- // return. This is probably common enough to handle the majority of cases.
- // Get some stats first, though.
- e.EncodeMessageType(msgAffix)
- e.EncodeString(a.Prefix)
- e.EncodeString(a.Suffix)
- e.EncodeMessage(a.Message)
- return nil
-}
diff --git a/vendor/golang.org/x/text/internal/catmsg/codec.go b/vendor/golang.org/x/text/internal/catmsg/codec.go
deleted file mode 100644
index 49c9fc9..0000000
--- a/vendor/golang.org/x/text/internal/catmsg/codec.go
+++ /dev/null
@@ -1,407 +0,0 @@
-// Copyright 2017 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 catmsg
-
-import (
- "errors"
- "fmt"
-
- "golang.org/x/text/language"
-)
-
-// A Renderer renders a Message.
-type Renderer interface {
- // Render renders the given string. The given string may be interpreted as a
- // format string, such as the one used by the fmt package or a template.
- Render(s string)
-
- // Arg returns the i-th argument passed to format a message. This method
- // should return nil if there is no such argument. Messages need access to
- // arguments to allow selecting a message based on linguistic features of
- // those arguments.
- Arg(i int) interface{}
-}
-
-// A Dictionary specifies a source of messages, including variables or macros.
-type Dictionary interface {
- // Lookup returns the message for the given key. It returns false for ok if
- // such a message could not be found.
- Lookup(key string) (data string, ok bool)
-
- // TODO: consider returning an interface, instead of a string. This will
- // allow implementations to do their own message type decoding.
-}
-
-// An Encoder serializes a Message to a string.
-type Encoder struct {
- // The root encoder is used for storing encoded variables.
- root *Encoder
- // The parent encoder provides the surrounding scopes for resolving variable
- // names.
- parent *Encoder
-
- tag language.Tag
-
- // buf holds the encoded message so far. After a message completes encoding,
- // the contents of buf, prefixed by the encoded length, are flushed to the
- // parent buffer.
- buf []byte
-
- // vars is the lookup table of variables in the current scope.
- vars []keyVal
-
- err error
- inBody bool // if false next call must be EncodeMessageType
-}
-
-type keyVal struct {
- key string
- offset int
-}
-
-// Language reports the language for which the encoded message will be stored
-// in the Catalog.
-func (e *Encoder) Language() language.Tag { return e.tag }
-
-func (e *Encoder) setError(err error) {
- if e.root.err == nil {
- e.root.err = err
- }
-}
-
-// EncodeUint encodes x.
-func (e *Encoder) EncodeUint(x uint64) {
- e.checkInBody()
- var buf [maxVarintBytes]byte
- n := encodeUint(buf[:], x)
- e.buf = append(e.buf, buf[:n]...)
-}
-
-// EncodeString encodes s.
-func (e *Encoder) EncodeString(s string) {
- e.checkInBody()
- e.EncodeUint(uint64(len(s)))
- e.buf = append(e.buf, s...)
-}
-
-// EncodeMessageType marks the current message to be of type h.
-//
-// It must be the first call of a Message's Compile method.
-func (e *Encoder) EncodeMessageType(h Handle) {
- if e.inBody {
- panic("catmsg: EncodeMessageType not the first method called")
- }
- e.inBody = true
- e.EncodeUint(uint64(h))
-}
-
-// EncodeMessage serializes the given message inline at the current position.
-func (e *Encoder) EncodeMessage(m Message) error {
- e = &Encoder{root: e.root, parent: e, tag: e.tag}
- err := m.Compile(e)
- if _, ok := m.(*Var); !ok {
- e.flushTo(e.parent)
- }
- return err
-}
-
-func (e *Encoder) checkInBody() {
- if !e.inBody {
- panic("catmsg: expected prior call to EncodeMessageType")
- }
-}
-
-// stripPrefix indicates the number of prefix bytes that must be stripped to
-// turn a single-element sequence into a message that is just this single member
-// without its size prefix. If the message can be stripped, b[1:n] contains the
-// size prefix.
-func stripPrefix(b []byte) (n int) {
- if len(b) > 0 && Handle(b[0]) == msgFirst {
- x, n, _ := decodeUint(b[1:])
- if 1+n+int(x) == len(b) {
- return 1 + n
- }
- }
- return 0
-}
-
-func (e *Encoder) flushTo(dst *Encoder) {
- data := e.buf
- p := stripPrefix(data)
- if p > 0 {
- data = data[1:]
- } else {
- // Prefix the size.
- dst.EncodeUint(uint64(len(data)))
- }
- dst.buf = append(dst.buf, data...)
-}
-
-func (e *Encoder) addVar(key string, m Message) error {
- for _, v := range e.parent.vars {
- if v.key == key {
- err := fmt.Errorf("catmsg: duplicate variable %q", key)
- e.setError(err)
- return err
- }
- }
- scope := e.parent
- // If a variable message is Incomplete, and does not evaluate to a message
- // during execution, we fall back to the variable name. We encode this by
- // appending the variable name if the message reports it's incomplete.
-
- err := m.Compile(e)
- if err != ErrIncomplete {
- e.setError(err)
- }
- switch {
- case len(e.buf) == 1 && Handle(e.buf[0]) == msgFirst: // empty sequence
- e.buf = e.buf[:0]
- e.inBody = false
- fallthrough
- case len(e.buf) == 0:
- // Empty message.
- if err := String(key).Compile(e); err != nil {
- e.setError(err)
- }
- case err == ErrIncomplete:
- if Handle(e.buf[0]) != msgFirst {
- seq := &Encoder{root: e.root, parent: e}
- seq.EncodeMessageType(msgFirst)
- e.flushTo(seq)
- e = seq
- }
- // e contains a sequence; append the fallback string.
- e.EncodeMessage(String(key))
- }
-
- // Flush result to variable heap.
- offset := len(e.root.buf)
- e.flushTo(e.root)
- e.buf = e.buf[:0]
-
- // Record variable offset in current scope.
- scope.vars = append(scope.vars, keyVal{key: key, offset: offset})
- return err
-}
-
-const (
- substituteVar = iota
- substituteMacro
- substituteError
-)
-
-// EncodeSubstitution inserts a resolved reference to a variable or macro.
-//
-// This call must be matched with a call to ExecuteSubstitution at decoding
-// time.
-func (e *Encoder) EncodeSubstitution(name string, arguments ...int) {
- if arity := len(arguments); arity > 0 {
- // TODO: also resolve macros.
- e.EncodeUint(substituteMacro)
- e.EncodeString(name)
- for _, a := range arguments {
- e.EncodeUint(uint64(a))
- }
- return
- }
- for scope := e; scope != nil; scope = scope.parent {
- for _, v := range scope.vars {
- if v.key != name {
- continue
- }
- e.EncodeUint(substituteVar) // TODO: support arity > 0
- e.EncodeUint(uint64(v.offset))
- return
- }
- }
- // TODO: refer to dictionary-wide scoped variables.
- e.EncodeUint(substituteError)
- e.EncodeString(name)
- e.setError(fmt.Errorf("catmsg: unknown var %q", name))
-}
-
-// A Decoder deserializes and evaluates messages that are encoded by an encoder.
-type Decoder struct {
- tag language.Tag
- dst Renderer
- macros Dictionary
-
- err error
- vars string
- data string
-
- macroArg int // TODO: allow more than one argument
-}
-
-// NewDecoder returns a new Decoder.
-//
-// Decoders are designed to be reused for multiple invocations of Execute.
-// Only one goroutine may call Execute concurrently.
-func NewDecoder(tag language.Tag, r Renderer, macros Dictionary) *Decoder {
- return &Decoder{
- tag: tag,
- dst: r,
- macros: macros,
- }
-}
-
-func (d *Decoder) setError(err error) {
- if d.err == nil {
- d.err = err
- }
-}
-
-// Language returns the language in which the message is being rendered.
-//
-// The destination language may be a child language of the language used for
-// encoding. For instance, a decoding language of "pt-PT"" is consistent with an
-// encoding language of "pt".
-func (d *Decoder) Language() language.Tag { return d.tag }
-
-// Done reports whether there are more bytes to process in this message.
-func (d *Decoder) Done() bool { return len(d.data) == 0 }
-
-// Render implements Renderer.
-func (d *Decoder) Render(s string) { d.dst.Render(s) }
-
-// Arg implements Renderer.
-//
-// During evaluation of macros, the argument positions may be mapped to
-// arguments that differ from the original call.
-func (d *Decoder) Arg(i int) interface{} {
- if d.macroArg != 0 {
- if i != 1 {
- panic("catmsg: only macros with single argument supported")
- }
- i = d.macroArg
- }
- return d.dst.Arg(i)
-}
-
-// DecodeUint decodes a number that was encoded with EncodeUint and advances the
-// position.
-func (d *Decoder) DecodeUint() uint64 {
- x, n, err := decodeUintString(d.data)
- d.data = d.data[n:]
- if err != nil {
- d.setError(err)
- }
- return x
-}
-
-// DecodeString decodes a string that was encoded with EncodeString and advances
-// the position.
-func (d *Decoder) DecodeString() string {
- size := d.DecodeUint()
- s := d.data[:size]
- d.data = d.data[size:]
- return s
-}
-
-// SkipMessage skips the message at the current location and advances the
-// position.
-func (d *Decoder) SkipMessage() {
- n := int(d.DecodeUint())
- d.data = d.data[n:]
-}
-
-// Execute decodes and evaluates msg.
-//
-// Only one goroutine may call execute.
-func (d *Decoder) Execute(msg string) error {
- d.err = nil
- if !d.execute(msg) {
- return ErrNoMatch
- }
- return d.err
-}
-
-func (d *Decoder) execute(msg string) bool {
- saved := d.data
- d.data = msg
- ok := d.executeMessage()
- d.data = saved
- return ok
-}
-
-// executeMessageFromData is like execute, but also decodes a leading message
-// size and clips the given string accordingly.
-//
-// It reports the number of bytes consumed and whether a message was selected.
-func (d *Decoder) executeMessageFromData(s string) (n int, ok bool) {
- saved := d.data
- d.data = s
- size := int(d.DecodeUint())
- n = len(s) - len(d.data)
- // Sanitize the setting. This allows skipping a size argument for
- // RawString and method Done.
- d.data = d.data[:size]
- ok = d.executeMessage()
- n += size - len(d.data)
- d.data = saved
- return n, ok
-}
-
-var errUnknownHandler = errors.New("catmsg: string contains unsupported handler")
-
-// executeMessage reads the handle id, initializes the decoder and executes the
-// message. It is assumed that all of d.data[d.p:] is the single message.
-func (d *Decoder) executeMessage() bool {
- if d.Done() {
- // We interpret no data as a valid empty message.
- return true
- }
- handle := d.DecodeUint()
-
- var fn Handler
- mutex.Lock()
- if int(handle) < len(handlers) {
- fn = handlers[handle]
- }
- mutex.Unlock()
- if fn == nil {
- d.setError(errUnknownHandler)
- d.execute(fmt.Sprintf("\x02$!(UNKNOWNMSGHANDLER=%#x)", handle))
- return true
- }
- return fn(d)
-}
-
-// ExecuteMessage decodes and executes the message at the current position.
-func (d *Decoder) ExecuteMessage() bool {
- n, ok := d.executeMessageFromData(d.data)
- d.data = d.data[n:]
- return ok
-}
-
-// ExecuteSubstitution executes the message corresponding to the substitution
-// as encoded by EncodeSubstitution.
-func (d *Decoder) ExecuteSubstitution() {
- switch x := d.DecodeUint(); x {
- case substituteVar:
- offset := d.DecodeUint()
- d.executeMessageFromData(d.vars[offset:])
- case substituteMacro:
- name := d.DecodeString()
- data, ok := d.macros.Lookup(name)
- old := d.macroArg
- // TODO: support macros of arity other than 1.
- d.macroArg = int(d.DecodeUint())
- switch {
- case !ok:
- // TODO: detect this at creation time.
- d.setError(fmt.Errorf("catmsg: undefined macro %q", name))
- fallthrough
- case !d.execute(data):
- d.dst.Render(name) // fall back to macro name.
- }
- d.macroArg = old
- case substituteError:
- d.dst.Render(d.DecodeString())
- default:
- panic("catmsg: unreachable")
- }
-}
diff --git a/vendor/golang.org/x/text/internal/catmsg/varint.go b/vendor/golang.org/x/text/internal/catmsg/varint.go
deleted file mode 100644
index a2cee2c..0000000
--- a/vendor/golang.org/x/text/internal/catmsg/varint.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2017 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 catmsg
-
-// This file implements varint encoding analogous to the one in encoding/binary.
-// We need a string version of this function, so we add that here and then add
-// the rest for consistency.
-
-import "errors"
-
-var (
- errIllegalVarint = errors.New("catmsg: illegal varint")
- errVarintTooLarge = errors.New("catmsg: varint too large for uint64")
-)
-
-const maxVarintBytes = 10 // maximum length of a varint
-
-// encodeUint encodes x as a variable-sized integer into buf and returns the
-// number of bytes written. buf must be at least maxVarintBytes long
-func encodeUint(buf []byte, x uint64) (n int) {
- for ; x > 127; n++ {
- buf[n] = 0x80 | uint8(x&0x7F)
- x >>= 7
- }
- buf[n] = uint8(x)
- n++
- return n
-}
-
-func decodeUintString(s string) (x uint64, size int, err error) {
- i := 0
- for shift := uint(0); shift < 64; shift += 7 {
- if i >= len(s) {
- return 0, i, errIllegalVarint
- }
- b := uint64(s[i])
- i++
- x |= (b & 0x7F) << shift
- if b&0x80 == 0 {
- return x, i, nil
- }
- }
- return 0, i, errVarintTooLarge
-}
-
-func decodeUint(b []byte) (x uint64, size int, err error) {
- i := 0
- for shift := uint(0); shift < 64; shift += 7 {
- if i >= len(b) {
- return 0, i, errIllegalVarint
- }
- c := uint64(b[i])
- i++
- x |= (c & 0x7F) << shift
- if c&0x80 == 0 {
- return x, i, nil
- }
- }
- return 0, i, errVarintTooLarge
-}
diff --git a/vendor/golang.org/x/text/internal/colltab/collelem.go b/vendor/golang.org/x/text/internal/colltab/collelem.go
deleted file mode 100644
index 0c23c8a..0000000
--- a/vendor/golang.org/x/text/internal/colltab/collelem.go
+++ /dev/null
@@ -1,376 +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 colltab
-
-import (
- "fmt"
- "unicode"
-)
-
-// Level identifies the collation comparison level.
-// The primary level corresponds to the basic sorting of text.
-// The secondary level corresponds to accents and related linguistic elements.
-// The tertiary level corresponds to casing and related concepts.
-// The quaternary level is derived from the other levels by the
-// various algorithms for handling variable elements.
-type Level int
-
-const (
- Primary Level = iota
- Secondary
- Tertiary
- Quaternary
- Identity
-
- NumLevels
-)
-
-const (
- defaultSecondary = 0x20
- defaultTertiary = 0x2
- maxTertiary = 0x1F
- MaxQuaternary = 0x1FFFFF // 21 bits.
-)
-
-// Elem is a representation of a collation element. This API provides ways to encode
-// and decode Elems. Implementations of collation tables may use values greater
-// or equal to PrivateUse for their own purposes. However, these should never be
-// returned by AppendNext.
-type Elem uint32
-
-const (
- maxCE Elem = 0xAFFFFFFF
- PrivateUse = minContract
- minContract = 0xC0000000
- maxContract = 0xDFFFFFFF
- minExpand = 0xE0000000
- maxExpand = 0xEFFFFFFF
- minDecomp = 0xF0000000
-)
-
-type ceType int
-
-const (
- ceNormal ceType = iota // ceNormal includes implicits (ce == 0)
- ceContractionIndex // rune can be a start of a contraction
- ceExpansionIndex // rune expands into a sequence of collation elements
- ceDecompose // rune expands using NFKC decomposition
-)
-
-func (ce Elem) ctype() ceType {
- if ce <= maxCE {
- return ceNormal
- }
- if ce <= maxContract {
- return ceContractionIndex
- } else {
- if ce <= maxExpand {
- return ceExpansionIndex
- }
- return ceDecompose
- }
- panic("should not reach here")
- return ceType(-1)
-}
-
-// For normal collation elements, we assume that a collation element either has
-// a primary or non-default secondary value, not both.
-// Collation elements with a primary value are of the form
-//
-// 01pppppp pppppppp ppppppp0 ssssssss
-// - p* is primary collation value
-// - s* is the secondary collation value
-// 00pppppp pppppppp ppppppps sssttttt, where
-// - p* is primary collation value
-// - s* offset of secondary from default value.
-// - t* is the tertiary collation value
-// 100ttttt cccccccc pppppppp pppppppp
-// - t* is the tertiar collation value
-// - c* is the canonical combining class
-// - p* is the primary collation value
-//
-// Collation elements with a secondary value are of the form
-//
-// 1010cccc ccccssss ssssssss tttttttt, where
-// - c* is the canonical combining class
-// - s* is the secondary collation value
-// - t* is the tertiary collation value
-// 11qqqqqq qqqqqqqq qqqqqqq0 00000000
-// - q* quaternary value
-const (
- ceTypeMask = 0xC0000000
- ceTypeMaskExt = 0xE0000000
- ceIgnoreMask = 0xF00FFFFF
- ceType1 = 0x40000000
- ceType2 = 0x00000000
- ceType3or4 = 0x80000000
- ceType4 = 0xA0000000
- ceTypeQ = 0xC0000000
- Ignore = ceType4
- firstNonPrimary = 0x80000000
- lastSpecialPrimary = 0xA0000000
- secondaryMask = 0x80000000
- hasTertiaryMask = 0x40000000
- primaryValueMask = 0x3FFFFE00
- maxPrimaryBits = 21
- compactPrimaryBits = 16
- maxSecondaryBits = 12
- maxTertiaryBits = 8
- maxCCCBits = 8
- maxSecondaryCompactBits = 8
- maxSecondaryDiffBits = 4
- maxTertiaryCompactBits = 5
- primaryShift = 9
- compactSecondaryShift = 5
- minCompactSecondary = defaultSecondary - 4
-)
-
-func makeImplicitCE(primary int) Elem {
- return ceType1 | Elem(primary<<primaryShift) | defaultSecondary
-}
-
-// MakeElem returns an Elem for the given values. It will return an error
-// if the given combination of values is invalid.
-func MakeElem(primary, secondary, tertiary int, ccc uint8) (Elem, error) {
- if w := primary; w >= 1<<maxPrimaryBits || w < 0 {
- return 0, fmt.Errorf("makeCE: primary weight out of bounds: %x >= %x", w, 1<<maxPrimaryBits)
- }
- if w := secondary; w >= 1<<maxSecondaryBits || w < 0 {
- return 0, fmt.Errorf("makeCE: secondary weight out of bounds: %x >= %x", w, 1<<maxSecondaryBits)
- }
- if w := tertiary; w >= 1<<maxTertiaryBits || w < 0 {
- return 0, fmt.Errorf("makeCE: tertiary weight out of bounds: %x >= %x", w, 1<<maxTertiaryBits)
- }
- ce := Elem(0)
- if primary != 0 {
- if ccc != 0 {
- if primary >= 1<<compactPrimaryBits {
- return 0, fmt.Errorf("makeCE: primary weight with non-zero CCC out of bounds: %x >= %x", primary, 1<<compactPrimaryBits)
- }
- if secondary != defaultSecondary {
- return 0, fmt.Errorf("makeCE: cannot combine non-default secondary value (%x) with non-zero CCC (%x)", secondary, ccc)
- }
- ce = Elem(tertiary << (compactPrimaryBits + maxCCCBits))
- ce |= Elem(ccc) << compactPrimaryBits
- ce |= Elem(primary)
- ce |= ceType3or4
- } else if tertiary == defaultTertiary {
- if secondary >= 1<<maxSecondaryCompactBits {
- return 0, fmt.Errorf("makeCE: secondary weight with non-zero primary out of bounds: %x >= %x", secondary, 1<<maxSecondaryCompactBits)
- }
- ce = Elem(primary<<(maxSecondaryCompactBits+1) + secondary)
- ce |= ceType1
- } else {
- d := secondary - defaultSecondary + maxSecondaryDiffBits
- if d >= 1<<maxSecondaryDiffBits || d < 0 {
- return 0, fmt.Errorf("makeCE: secondary weight diff out of bounds: %x < 0 || %x > %x", d, d, 1<<maxSecondaryDiffBits)
- }
- if tertiary >= 1<<maxTertiaryCompactBits {
- return 0, fmt.Errorf("makeCE: tertiary weight with non-zero primary out of bounds: %x > %x", tertiary, 1<<maxTertiaryCompactBits)
- }
- ce = Elem(primary<<maxSecondaryDiffBits + d)
- ce = ce<<maxTertiaryCompactBits + Elem(tertiary)
- }
- } else {
- ce = Elem(secondary<<maxTertiaryBits + tertiary)
- ce += Elem(ccc) << (maxSecondaryBits + maxTertiaryBits)
- ce |= ceType4
- }
- return ce, nil
-}
-
-// MakeQuaternary returns an Elem with the given quaternary value.
-func MakeQuaternary(v int) Elem {
- return ceTypeQ | Elem(v<<primaryShift)
-}
-
-// Mask sets weights for any level smaller than l to 0.
-// The resulting Elem can be used to test for equality with
-// other Elems to which the same mask has been applied.
-func (ce Elem) Mask(l Level) uint32 {
- return 0
-}
-
-// CCC returns the canonical combining class associated with the underlying character,
-// if applicable, or 0 otherwise.
-func (ce Elem) CCC() uint8 {
- if ce&ceType3or4 != 0 {
- if ce&ceType4 == ceType3or4 {
- return uint8(ce >> 16)
- }
- return uint8(ce >> 20)
- }
- return 0
-}
-
-// Primary returns the primary collation weight for ce.
-func (ce Elem) Primary() int {
- if ce >= firstNonPrimary {
- if ce > lastSpecialPrimary {
- return 0
- }
- return int(uint16(ce))
- }
- return int(ce&primaryValueMask) >> primaryShift
-}
-
-// Secondary returns the secondary collation weight for ce.
-func (ce Elem) Secondary() int {
- switch ce & ceTypeMask {
- case ceType1:
- return int(uint8(ce))
- case ceType2:
- return minCompactSecondary + int((ce>>compactSecondaryShift)&0xF)
- case ceType3or4:
- if ce < ceType4 {
- return defaultSecondary
- }
- return int(ce>>8) & 0xFFF
- case ceTypeQ:
- return 0
- }
- panic("should not reach here")
-}
-
-// Tertiary returns the tertiary collation weight for ce.
-func (ce Elem) Tertiary() uint8 {
- if ce&hasTertiaryMask == 0 {
- if ce&ceType3or4 == 0 {
- return uint8(ce & 0x1F)
- }
- if ce&ceType4 == ceType4 {
- return uint8(ce)
- }
- return uint8(ce>>24) & 0x1F // type 2
- } else if ce&ceTypeMask == ceType1 {
- return defaultTertiary
- }
- // ce is a quaternary value.
- return 0
-}
-
-func (ce Elem) updateTertiary(t uint8) Elem {
- if ce&ceTypeMask == ceType1 {
- // convert to type 4
- nce := ce & primaryValueMask
- nce |= Elem(uint8(ce)-minCompactSecondary) << compactSecondaryShift
- ce = nce
- } else if ce&ceTypeMaskExt == ceType3or4 {
- ce &= ^Elem(maxTertiary << 24)
- return ce | (Elem(t) << 24)
- } else {
- // type 2 or 4
- ce &= ^Elem(maxTertiary)
- }
- return ce | Elem(t)
-}
-
-// Quaternary returns the quaternary value if explicitly specified,
-// 0 if ce == Ignore, or MaxQuaternary otherwise.
-// Quaternary values are used only for shifted variants.
-func (ce Elem) Quaternary() int {
- if ce&ceTypeMask == ceTypeQ {
- return int(ce&primaryValueMask) >> primaryShift
- } else if ce&ceIgnoreMask == Ignore {
- return 0
- }
- return MaxQuaternary
-}
-
-// Weight returns the collation weight for the given level.
-func (ce Elem) Weight(l Level) int {
- switch l {
- case Primary:
- return ce.Primary()
- case Secondary:
- return ce.Secondary()
- case Tertiary:
- return int(ce.Tertiary())
- case Quaternary:
- return ce.Quaternary()
- }
- return 0 // return 0 (ignore) for undefined levels.
-}
-
-// For contractions, collation elements are of the form
-// 110bbbbb bbbbbbbb iiiiiiii iiiinnnn, where
-// - n* is the size of the first node in the contraction trie.
-// - i* is the index of the first node in the contraction trie.
-// - b* is the offset into the contraction collation element table.
-//
-// See contract.go for details on the contraction trie.
-const (
- maxNBits = 4
- maxTrieIndexBits = 12
- maxContractOffsetBits = 13
-)
-
-func splitContractIndex(ce Elem) (index, n, offset int) {
- n = int(ce & (1<<maxNBits - 1))
- ce >>= maxNBits
- index = int(ce & (1<<maxTrieIndexBits - 1))
- ce >>= maxTrieIndexBits
- offset = int(ce & (1<<maxContractOffsetBits - 1))
- return
-}
-
-// For expansions, Elems are of the form 11100000 00000000 bbbbbbbb bbbbbbbb,
-// where b* is the index into the expansion sequence table.
-const maxExpandIndexBits = 16
-
-func splitExpandIndex(ce Elem) (index int) {
- return int(uint16(ce))
-}
-
-// Some runes can be expanded using NFKD decomposition. Instead of storing the full
-// sequence of collation elements, we decompose the rune and lookup the collation
-// elements for each rune in the decomposition and modify the tertiary weights.
-// The Elem, in this case, is of the form 11110000 00000000 wwwwwwww vvvvvvvv, where
-// - v* is the replacement tertiary weight for the first rune,
-// - w* is the replacement tertiary weight for the second rune,
-//
-// Tertiary weights of subsequent runes should be replaced with maxTertiary.
-// See https://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.
-func splitDecompose(ce Elem) (t1, t2 uint8) {
- return uint8(ce), uint8(ce >> 8)
-}
-
-const (
- // These constants were taken from https://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.
- minUnified rune = 0x4E00
- maxUnified = 0x9FFF
- minCompatibility = 0xF900
- maxCompatibility = 0xFAFF
- minRare = 0x3400
- maxRare = 0x4DBF
-)
-const (
- commonUnifiedOffset = 0x10000
- rareUnifiedOffset = 0x20000 // largest rune in common is U+FAFF
- otherOffset = 0x50000 // largest rune in rare is U+2FA1D
- illegalOffset = otherOffset + int(unicode.MaxRune)
- maxPrimary = illegalOffset + 1
-)
-
-// implicitPrimary returns the primary weight for the a rune
-// for which there is no entry for the rune in the collation table.
-// We take a different approach from the one specified in
-// https://unicode.org/reports/tr10/#Implicit_Weights,
-// but preserve the resulting relative ordering of the runes.
-func implicitPrimary(r rune) int {
- if unicode.Is(unicode.Ideographic, r) {
- if r >= minUnified && r <= maxUnified {
- // The most common case for CJK.
- return int(r) + commonUnifiedOffset
- }
- if r >= minCompatibility && r <= maxCompatibility {
- // This will typically not hit. The DUCET explicitly specifies mappings
- // for all characters that do not decompose.
- return int(r) + commonUnifiedOffset
- }
- return int(r) + rareUnifiedOffset
- }
- return int(r) + otherOffset
-}
diff --git a/vendor/golang.org/x/text/internal/colltab/colltab.go b/vendor/golang.org/x/text/internal/colltab/colltab.go
deleted file mode 100644
index 02f2247..0000000
--- a/vendor/golang.org/x/text/internal/colltab/colltab.go
+++ /dev/null
@@ -1,105 +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 colltab contains functionality related to collation tables.
-// It is only to be used by the collate and search packages.
-package colltab // import "golang.org/x/text/internal/colltab"
-
-import (
- "sort"
-
- "golang.org/x/text/language"
-)
-
-// MatchLang finds the index of t in tags, using a matching algorithm used for
-// collation and search. tags[0] must be language.Und, the remaining tags should
-// be sorted alphabetically.
-//
-// Language matching for collation and search is different from the matching
-// defined by language.Matcher: the (inferred) base language must be an exact
-// match for the relevant fields. For example, "gsw" should not match "de".
-// Also the parent relation is different, as a parent may have a different
-// script. So usually the parent of zh-Hant is und, whereas for MatchLang it is
-// zh.
-func MatchLang(t language.Tag, tags []language.Tag) int {
- // Canonicalize the values, including collapsing macro languages.
- t, _ = language.All.Canonicalize(t)
-
- base, conf := t.Base()
- // Estimate the base language, but only use high-confidence values.
- if conf < language.High {
- // The root locale supports "search" and "standard". We assume that any
- // implementation will only use one of both.
- return 0
- }
-
- // Maximize base and script and normalize the tag.
- if _, s, r := t.Raw(); (r != language.Region{}) {
- p, _ := language.Raw.Compose(base, s, r)
- // Taking the parent forces the script to be maximized.
- p = p.Parent()
- // Add back region and extensions.
- t, _ = language.Raw.Compose(p, r, t.Extensions())
- } else {
- // Set the maximized base language.
- t, _ = language.Raw.Compose(base, s, t.Extensions())
- }
-
- // Find start index of the language tag.
- start := 1 + sort.Search(len(tags)-1, func(i int) bool {
- b, _, _ := tags[i+1].Raw()
- return base.String() <= b.String()
- })
- if start < len(tags) {
- if b, _, _ := tags[start].Raw(); b != base {
- return 0
- }
- }
-
- // Besides the base language, script and region, only the collation type and
- // the custom variant defined in the 'u' extension are used to distinguish a
- // locale.
- // Strip all variants and extensions and add back the custom variant.
- tdef, _ := language.Raw.Compose(t.Raw())
- tdef, _ = tdef.SetTypeForKey("va", t.TypeForKey("va"))
-
- // First search for a specialized collation type, if present.
- try := []language.Tag{tdef}
- if co := t.TypeForKey("co"); co != "" {
- tco, _ := tdef.SetTypeForKey("co", co)
- try = []language.Tag{tco, tdef}
- }
-
- for _, tx := range try {
- for ; tx != language.Und; tx = parent(tx) {
- for i, t := range tags[start:] {
- if b, _, _ := t.Raw(); b != base {
- break
- }
- if tx == t {
- return start + i
- }
- }
- }
- }
- return 0
-}
-
-// parent computes the structural parent. This means inheritance may change
-// script. So, unlike the CLDR parent, parent(zh-Hant) == zh.
-func parent(t language.Tag) language.Tag {
- if t.TypeForKey("va") != "" {
- t, _ = t.SetTypeForKey("va", "")
- return t
- }
- result := language.Und
- if b, s, r := t.Raw(); (r != language.Region{}) {
- result, _ = language.Raw.Compose(b, s, t.Extensions())
- } else if (s != language.Script{}) {
- result, _ = language.Raw.Compose(b, t.Extensions())
- } else if (b != language.Base{}) {
- result, _ = language.Raw.Compose(t.Extensions())
- }
- return result
-}
diff --git a/vendor/golang.org/x/text/internal/colltab/contract.go b/vendor/golang.org/x/text/internal/colltab/contract.go
deleted file mode 100644
index 25649d4..0000000
--- a/vendor/golang.org/x/text/internal/colltab/contract.go
+++ /dev/null
@@ -1,145 +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 colltab
-
-import "unicode/utf8"
-
-// For a description of ContractTrieSet, see text/collate/build/contract.go.
-
-type ContractTrieSet []struct{ L, H, N, I uint8 }
-
-// ctScanner is used to match a trie to an input sequence.
-// A contraction may match a non-contiguous sequence of bytes in an input string.
-// For example, if there is a contraction for <a, combining_ring>, it should match
-// the sequence <a, combining_cedilla, combining_ring>, as combining_cedilla does
-// not block combining_ring.
-// ctScanner does not automatically skip over non-blocking non-starters, but rather
-// retains the state of the last match and leaves it up to the user to continue
-// the match at the appropriate points.
-type ctScanner struct {
- states ContractTrieSet
- s []byte
- n int
- index int
- pindex int
- done bool
-}
-
-type ctScannerString struct {
- states ContractTrieSet
- s string
- n int
- index int
- pindex int
- done bool
-}
-
-func (t ContractTrieSet) scanner(index, n int, b []byte) ctScanner {
- return ctScanner{s: b, states: t[index:], n: n}
-}
-
-func (t ContractTrieSet) scannerString(index, n int, str string) ctScannerString {
- return ctScannerString{s: str, states: t[index:], n: n}
-}
-
-// result returns the offset i and bytes consumed p so far. If no suffix
-// matched, i and p will be 0.
-func (s *ctScanner) result() (i, p int) {
- return s.index, s.pindex
-}
-
-func (s *ctScannerString) result() (i, p int) {
- return s.index, s.pindex
-}
-
-const (
- final = 0
- noIndex = 0xFF
-)
-
-// scan matches the longest suffix at the current location in the input
-// and returns the number of bytes consumed.
-func (s *ctScanner) scan(p int) int {
- pr := p // the p at the rune start
- str := s.s
- states, n := s.states, s.n
- for i := 0; i < n && p < len(str); {
- e := states[i]
- c := str[p]
- // TODO: a significant number of contractions are of a form that
- // cannot match discontiguous UTF-8 in a normalized string. We could let
- // a negative value of e.n mean that we can set s.done = true and avoid
- // the need for additional matches.
- if c >= e.L {
- if e.L == c {
- p++
- if e.I != noIndex {
- s.index = int(e.I)
- s.pindex = p
- }
- if e.N != final {
- i, states, n = 0, states[int(e.H)+n:], int(e.N)
- if p >= len(str) || utf8.RuneStart(str[p]) {
- s.states, s.n, pr = states, n, p
- }
- } else {
- s.done = true
- return p
- }
- continue
- } else if e.N == final && c <= e.H {
- p++
- s.done = true
- s.index = int(c-e.L) + int(e.I)
- s.pindex = p
- return p
- }
- }
- i++
- }
- return pr
-}
-
-// scan is a verbatim copy of ctScanner.scan.
-func (s *ctScannerString) scan(p int) int {
- pr := p // the p at the rune start
- str := s.s
- states, n := s.states, s.n
- for i := 0; i < n && p < len(str); {
- e := states[i]
- c := str[p]
- // TODO: a significant number of contractions are of a form that
- // cannot match discontiguous UTF-8 in a normalized string. We could let
- // a negative value of e.n mean that we can set s.done = true and avoid
- // the need for additional matches.
- if c >= e.L {
- if e.L == c {
- p++
- if e.I != noIndex {
- s.index = int(e.I)
- s.pindex = p
- }
- if e.N != final {
- i, states, n = 0, states[int(e.H)+n:], int(e.N)
- if p >= len(str) || utf8.RuneStart(str[p]) {
- s.states, s.n, pr = states, n, p
- }
- } else {
- s.done = true
- return p
- }
- continue
- } else if e.N == final && c <= e.H {
- p++
- s.done = true
- s.index = int(c-e.L) + int(e.I)
- s.pindex = p
- return p
- }
- }
- i++
- }
- return pr
-}
diff --git a/vendor/golang.org/x/text/internal/colltab/iter.go b/vendor/golang.org/x/text/internal/colltab/iter.go
deleted file mode 100644
index c1b1ba8..0000000
--- a/vendor/golang.org/x/text/internal/colltab/iter.go
+++ /dev/null
@@ -1,178 +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 colltab
-
-// An Iter incrementally converts chunks of the input text to collation
-// elements, while ensuring that the collation elements are in normalized order
-// (that is, they are in the order as if the input text were normalized first).
-type Iter struct {
- Weighter Weighter
- Elems []Elem
- // N is the number of elements in Elems that will not be reordered on
- // subsequent iterations, N <= len(Elems).
- N int
-
- bytes []byte
- str string
- // Because the Elems buffer may contain collation elements that are needed
- // for look-ahead, we need two positions in the text (bytes or str): one for
- // the end position in the text for the current iteration and one for the
- // start of the next call to appendNext.
- pEnd int // end position in text corresponding to N.
- pNext int // pEnd <= pNext.
-}
-
-// Reset sets the position in the current input text to p and discards any
-// results obtained so far.
-func (i *Iter) Reset(p int) {
- i.Elems = i.Elems[:0]
- i.N = 0
- i.pEnd = p
- i.pNext = p
-}
-
-// Len returns the length of the input text.
-func (i *Iter) Len() int {
- if i.bytes != nil {
- return len(i.bytes)
- }
- return len(i.str)
-}
-
-// Discard removes the collation elements up to N.
-func (i *Iter) Discard() {
- // TODO: change this such that only modifiers following starters will have
- // to be copied.
- i.Elems = i.Elems[:copy(i.Elems, i.Elems[i.N:])]
- i.N = 0
-}
-
-// End returns the end position of the input text for which Next has returned
-// results.
-func (i *Iter) End() int {
- return i.pEnd
-}
-
-// SetInput resets i to input s.
-func (i *Iter) SetInput(s []byte) {
- i.bytes = s
- i.str = ""
- i.Reset(0)
-}
-
-// SetInputString resets i to input s.
-func (i *Iter) SetInputString(s string) {
- i.str = s
- i.bytes = nil
- i.Reset(0)
-}
-
-func (i *Iter) done() bool {
- return i.pNext >= len(i.str) && i.pNext >= len(i.bytes)
-}
-
-func (i *Iter) appendNext() bool {
- if i.done() {
- return false
- }
- var sz int
- if i.bytes == nil {
- i.Elems, sz = i.Weighter.AppendNextString(i.Elems, i.str[i.pNext:])
- } else {
- i.Elems, sz = i.Weighter.AppendNext(i.Elems, i.bytes[i.pNext:])
- }
- if sz == 0 {
- sz = 1
- }
- i.pNext += sz
- return true
-}
-
-// Next appends Elems to the internal array. On each iteration, it will either
-// add starters or modifiers. In the majority of cases, an Elem with a primary
-// value > 0 will have a CCC of 0. The CCC values of collation elements are also
-// used to detect if the input string was not normalized and to adjust the
-// result accordingly.
-func (i *Iter) Next() bool {
- if i.N == len(i.Elems) && !i.appendNext() {
- return false
- }
-
- // Check if the current segment starts with a starter.
- prevCCC := i.Elems[len(i.Elems)-1].CCC()
- if prevCCC == 0 {
- i.N = len(i.Elems)
- i.pEnd = i.pNext
- return true
- } else if i.Elems[i.N].CCC() == 0 {
- // set i.N to only cover part of i.Elems for which prevCCC == 0 and
- // use rest for the next call to next.
- for i.N++; i.N < len(i.Elems) && i.Elems[i.N].CCC() == 0; i.N++ {
- }
- i.pEnd = i.pNext
- return true
- }
-
- // The current (partial) segment starts with modifiers. We need to collect
- // all successive modifiers to ensure that they are normalized.
- for {
- p := len(i.Elems)
- i.pEnd = i.pNext
- if !i.appendNext() {
- break
- }
-
- if ccc := i.Elems[p].CCC(); ccc == 0 || len(i.Elems)-i.N > maxCombiningCharacters {
- // Leave the starter for the next iteration. This ensures that we
- // do not return sequences of collation elements that cross two
- // segments.
- //
- // TODO: handle large number of combining characters by fully
- // normalizing the input segment before iteration. This ensures
- // results are consistent across the text repo.
- i.N = p
- return true
- } else if ccc < prevCCC {
- i.doNorm(p, ccc) // should be rare, never occurs for NFD and FCC.
- } else {
- prevCCC = ccc
- }
- }
-
- done := len(i.Elems) != i.N
- i.N = len(i.Elems)
- return done
-}
-
-// nextNoNorm is the same as next, but does not "normalize" the collation
-// elements.
-func (i *Iter) nextNoNorm() bool {
- // TODO: remove this function. Using this instead of next does not seem
- // to improve performance in any significant way. We retain this until
- // later for evaluation purposes.
- if i.done() {
- return false
- }
- i.appendNext()
- i.N = len(i.Elems)
- return true
-}
-
-const maxCombiningCharacters = 30
-
-// doNorm reorders the collation elements in i.Elems.
-// It assumes that blocks of collation elements added with appendNext
-// either start and end with the same CCC or start with CCC == 0.
-// This allows for a single insertion point for the entire block.
-// The correctness of this assumption is verified in builder.go.
-func (i *Iter) doNorm(p int, ccc uint8) {
- n := len(i.Elems)
- k := p
- for p--; p > i.N && ccc < i.Elems[p-1].CCC(); p-- {
- }
- i.Elems = append(i.Elems, i.Elems[p:k]...)
- copy(i.Elems[p:], i.Elems[k:])
- i.Elems = i.Elems[:n]
-}
diff --git a/vendor/golang.org/x/text/internal/colltab/numeric.go b/vendor/golang.org/x/text/internal/colltab/numeric.go
deleted file mode 100644
index 53b819c..0000000
--- a/vendor/golang.org/x/text/internal/colltab/numeric.go
+++ /dev/null
@@ -1,236 +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 colltab
-
-import (
- "unicode"
- "unicode/utf8"
-)
-
-// NewNumericWeighter wraps w to replace individual digits to sort based on their
-// numeric value.
-//
-// Weighter w must have a free primary weight after the primary weight for 9.
-// If this is not the case, numeric value will sort at the same primary level
-// as the first primary sorting after 9.
-func NewNumericWeighter(w Weighter) Weighter {
- getElem := func(s string) Elem {
- elems, _ := w.AppendNextString(nil, s)
- return elems[0]
- }
- nine := getElem("9")
-
- // Numbers should order before zero, but the DUCET has no room for this.
- // TODO: move before zero once we use fractional collation elements.
- ns, _ := MakeElem(nine.Primary()+1, nine.Secondary(), int(nine.Tertiary()), 0)
-
- return &numericWeighter{
- Weighter: w,
-
- // We assume that w sorts digits of different kinds in order of numeric
- // value and that the tertiary weight order is preserved.
- //
- // TODO: evaluate whether it is worth basing the ranges on the Elem
- // encoding itself once the move to fractional weights is complete.
- zero: getElem("0"),
- zeroSpecialLo: getElem("0"), // U+FF10 FULLWIDTH DIGIT ZERO
- zeroSpecialHi: getElem("₀"), // U+2080 SUBSCRIPT ZERO
- nine: nine,
- nineSpecialHi: getElem("₉"), // U+2089 SUBSCRIPT NINE
- numberStart: ns,
- }
-}
-
-// A numericWeighter translates a stream of digits into a stream of weights
-// representing the numeric value.
-type numericWeighter struct {
- Weighter
-
- // The Elems below all demarcate boundaries of specific ranges. With the
- // current element encoding digits are in two ranges: normal (default
- // tertiary value) and special. For most languages, digits have collation
- // elements in the normal range.
- //
- // Note: the range tests are very specific for the element encoding used by
- // this implementation. The tests in collate_test.go are designed to fail
- // if this code is not updated when an encoding has changed.
-
- zero Elem // normal digit zero
- zeroSpecialLo Elem // special digit zero, low tertiary value
- zeroSpecialHi Elem // special digit zero, high tertiary value
- nine Elem // normal digit nine
- nineSpecialHi Elem // special digit nine
- numberStart Elem
-}
-
-// AppendNext calls the namesake of the underlying weigher, but replaces single
-// digits with weights representing their value.
-func (nw *numericWeighter) AppendNext(buf []Elem, s []byte) (ce []Elem, n int) {
- ce, n = nw.Weighter.AppendNext(buf, s)
- nc := numberConverter{
- elems: buf,
- w: nw,
- b: s,
- }
- isZero, ok := nc.checkNextDigit(ce)
- if !ok {
- return ce, n
- }
- // ce might have been grown already, so take it instead of buf.
- nc.init(ce, len(buf), isZero)
- for n < len(s) {
- ce, sz := nw.Weighter.AppendNext(nc.elems, s[n:])
- nc.b = s
- n += sz
- if !nc.update(ce) {
- break
- }
- }
- return nc.result(), n
-}
-
-// AppendNextString calls the namesake of the underlying weigher, but replaces
-// single digits with weights representing their value.
-func (nw *numericWeighter) AppendNextString(buf []Elem, s string) (ce []Elem, n int) {
- ce, n = nw.Weighter.AppendNextString(buf, s)
- nc := numberConverter{
- elems: buf,
- w: nw,
- s: s,
- }
- isZero, ok := nc.checkNextDigit(ce)
- if !ok {
- return ce, n
- }
- nc.init(ce, len(buf), isZero)
- for n < len(s) {
- ce, sz := nw.Weighter.AppendNextString(nc.elems, s[n:])
- nc.s = s
- n += sz
- if !nc.update(ce) {
- break
- }
- }
- return nc.result(), n
-}
-
-type numberConverter struct {
- w *numericWeighter
-
- elems []Elem
- nDigits int
- lenIndex int
-
- s string // set if the input was of type string
- b []byte // set if the input was of type []byte
-}
-
-// init completes initialization of a numberConverter and prepares it for adding
-// more digits. elems is assumed to have a digit starting at oldLen.
-func (nc *numberConverter) init(elems []Elem, oldLen int, isZero bool) {
- // Insert a marker indicating the start of a number and a placeholder
- // for the number of digits.
- if isZero {
- elems = append(elems[:oldLen], nc.w.numberStart, 0)
- } else {
- elems = append(elems, 0, 0)
- copy(elems[oldLen+2:], elems[oldLen:])
- elems[oldLen] = nc.w.numberStart
- elems[oldLen+1] = 0
-
- nc.nDigits = 1
- }
- nc.elems = elems
- nc.lenIndex = oldLen + 1
-}
-
-// checkNextDigit reports whether bufNew adds a single digit relative to the old
-// buffer. If it does, it also reports whether this digit is zero.
-func (nc *numberConverter) checkNextDigit(bufNew []Elem) (isZero, ok bool) {
- if len(nc.elems) >= len(bufNew) {
- return false, false
- }
- e := bufNew[len(nc.elems)]
- if e < nc.w.zeroSpecialLo || nc.w.nine < e {
- // Not a number.
- return false, false
- }
- if e < nc.w.zero {
- if e > nc.w.nineSpecialHi {
- // Not a number.
- return false, false
- }
- if !nc.isDigit() {
- return false, false
- }
- isZero = e <= nc.w.zeroSpecialHi
- } else {
- // This is the common case if we encounter a digit.
- isZero = e == nc.w.zero
- }
- // Test the remaining added collation elements have a zero primary value.
- if n := len(bufNew) - len(nc.elems); n > 1 {
- for i := len(nc.elems) + 1; i < len(bufNew); i++ {
- if bufNew[i].Primary() != 0 {
- return false, false
- }
- }
- // In some rare cases, collation elements will encode runes in
- // unicode.No as a digit. For example Ethiopic digits (U+1369 - U+1371)
- // are not in Nd. Also some digits that clearly belong in unicode.No,
- // like U+0C78 TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR, have
- // collation elements indistinguishable from normal digits.
- // Unfortunately, this means we need to make this check for nearly all
- // non-Latin digits.
- //
- // TODO: check the performance impact and find something better if it is
- // an issue.
- if !nc.isDigit() {
- return false, false
- }
- }
- return isZero, true
-}
-
-func (nc *numberConverter) isDigit() bool {
- if nc.b != nil {
- r, _ := utf8.DecodeRune(nc.b)
- return unicode.In(r, unicode.Nd)
- }
- r, _ := utf8.DecodeRuneInString(nc.s)
- return unicode.In(r, unicode.Nd)
-}
-
-// We currently support a maximum of about 2M digits (the number of primary
-// values). Such numbers will compare correctly against small numbers, but their
-// comparison against other large numbers is undefined.
-//
-// TODO: define a proper fallback, such as comparing large numbers textually or
-// actually allowing numbers of unlimited length.
-//
-// TODO: cap this to a lower number (like 100) and maybe allow a larger number
-// in an option?
-const maxDigits = 1<<maxPrimaryBits - 1
-
-func (nc *numberConverter) update(elems []Elem) bool {
- isZero, ok := nc.checkNextDigit(elems)
- if nc.nDigits == 0 && isZero {
- return true
- }
- nc.elems = elems
- if !ok {
- return false
- }
- nc.nDigits++
- return nc.nDigits < maxDigits
-}
-
-// result fills in the length element for the digit sequence and returns the
-// completed collation elements.
-func (nc *numberConverter) result() []Elem {
- e, _ := MakeElem(nc.nDigits, defaultSecondary, defaultTertiary, 0)
- nc.elems[nc.lenIndex] = e
- return nc.elems
-}
diff --git a/vendor/golang.org/x/text/internal/colltab/table.go b/vendor/golang.org/x/text/internal/colltab/table.go
deleted file mode 100644
index e26e36d..0000000
--- a/vendor/golang.org/x/text/internal/colltab/table.go
+++ /dev/null
@@ -1,275 +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 colltab
-
-import (
- "unicode/utf8"
-
- "golang.org/x/text/unicode/norm"
-)
-
-// Table holds all collation data for a given collation ordering.
-type Table struct {
- Index Trie // main trie
-
- // expansion info
- ExpandElem []uint32
-
- // contraction info
- ContractTries ContractTrieSet
- ContractElem []uint32
- MaxContractLen int
- VariableTop uint32
-}
-
-func (t *Table) AppendNext(w []Elem, b []byte) (res []Elem, n int) {
- return t.appendNext(w, source{bytes: b})
-}
-
-func (t *Table) AppendNextString(w []Elem, s string) (res []Elem, n int) {
- return t.appendNext(w, source{str: s})
-}
-
-func (t *Table) Start(p int, b []byte) int {
- // TODO: implement
- panic("not implemented")
-}
-
-func (t *Table) StartString(p int, s string) int {
- // TODO: implement
- panic("not implemented")
-}
-
-func (t *Table) Domain() []string {
- // TODO: implement
- panic("not implemented")
-}
-
-func (t *Table) Top() uint32 {
- return t.VariableTop
-}
-
-type source struct {
- str string
- bytes []byte
-}
-
-func (src *source) lookup(t *Table) (ce Elem, sz int) {
- if src.bytes == nil {
- return t.Index.lookupString(src.str)
- }
- return t.Index.lookup(src.bytes)
-}
-
-func (src *source) tail(sz int) {
- if src.bytes == nil {
- src.str = src.str[sz:]
- } else {
- src.bytes = src.bytes[sz:]
- }
-}
-
-func (src *source) nfd(buf []byte, end int) []byte {
- if src.bytes == nil {
- return norm.NFD.AppendString(buf[:0], src.str[:end])
- }
- return norm.NFD.Append(buf[:0], src.bytes[:end]...)
-}
-
-func (src *source) rune() (r rune, sz int) {
- if src.bytes == nil {
- return utf8.DecodeRuneInString(src.str)
- }
- return utf8.DecodeRune(src.bytes)
-}
-
-func (src *source) properties(f norm.Form) norm.Properties {
- if src.bytes == nil {
- return f.PropertiesString(src.str)
- }
- return f.Properties(src.bytes)
-}
-
-// appendNext appends the weights corresponding to the next rune or
-// contraction in s. If a contraction is matched to a discontinuous
-// sequence of runes, the weights for the interstitial runes are
-// appended as well. It returns a new slice that includes the appended
-// weights and the number of bytes consumed from s.
-func (t *Table) appendNext(w []Elem, src source) (res []Elem, n int) {
- ce, sz := src.lookup(t)
- tp := ce.ctype()
- if tp == ceNormal {
- if ce == 0 {
- r, _ := src.rune()
- const (
- hangulSize = 3
- firstHangul = 0xAC00
- lastHangul = 0xD7A3
- )
- if r >= firstHangul && r <= lastHangul {
- // TODO: performance can be considerably improved here.
- n = sz
- var buf [16]byte // Used for decomposing Hangul.
- for b := src.nfd(buf[:0], hangulSize); len(b) > 0; b = b[sz:] {
- ce, sz = t.Index.lookup(b)
- w = append(w, ce)
- }
- return w, n
- }
- ce = makeImplicitCE(implicitPrimary(r))
- }
- w = append(w, ce)
- } else if tp == ceExpansionIndex {
- w = t.appendExpansion(w, ce)
- } else if tp == ceContractionIndex {
- n := 0
- src.tail(sz)
- if src.bytes == nil {
- w, n = t.matchContractionString(w, ce, src.str)
- } else {
- w, n = t.matchContraction(w, ce, src.bytes)
- }
- sz += n
- } else if tp == ceDecompose {
- // Decompose using NFKD and replace tertiary weights.
- t1, t2 := splitDecompose(ce)
- i := len(w)
- nfkd := src.properties(norm.NFKD).Decomposition()
- for p := 0; len(nfkd) > 0; nfkd = nfkd[p:] {
- w, p = t.appendNext(w, source{bytes: nfkd})
- }
- w[i] = w[i].updateTertiary(t1)
- if i++; i < len(w) {
- w[i] = w[i].updateTertiary(t2)
- for i++; i < len(w); i++ {
- w[i] = w[i].updateTertiary(maxTertiary)
- }
- }
- }
- return w, sz
-}
-
-func (t *Table) appendExpansion(w []Elem, ce Elem) []Elem {
- i := splitExpandIndex(ce)
- n := int(t.ExpandElem[i])
- i++
- for _, ce := range t.ExpandElem[i : i+n] {
- w = append(w, Elem(ce))
- }
- return w
-}
-
-func (t *Table) matchContraction(w []Elem, ce Elem, suffix []byte) ([]Elem, int) {
- index, n, offset := splitContractIndex(ce)
-
- scan := t.ContractTries.scanner(index, n, suffix)
- buf := [norm.MaxSegmentSize]byte{}
- bufp := 0
- p := scan.scan(0)
-
- if !scan.done && p < len(suffix) && suffix[p] >= utf8.RuneSelf {
- // By now we should have filtered most cases.
- p0 := p
- bufn := 0
- rune := norm.NFD.Properties(suffix[p:])
- p += rune.Size()
- if rune.LeadCCC() != 0 {
- prevCC := rune.TrailCCC()
- // A gap may only occur in the last normalization segment.
- // This also ensures that len(scan.s) < norm.MaxSegmentSize.
- if end := norm.NFD.FirstBoundary(suffix[p:]); end != -1 {
- scan.s = suffix[:p+end]
- }
- for p < len(suffix) && !scan.done && suffix[p] >= utf8.RuneSelf {
- rune = norm.NFD.Properties(suffix[p:])
- if ccc := rune.LeadCCC(); ccc == 0 || prevCC >= ccc {
- break
- }
- prevCC = rune.TrailCCC()
- if pp := scan.scan(p); pp != p {
- // Copy the interstitial runes for later processing.
- bufn += copy(buf[bufn:], suffix[p0:p])
- if scan.pindex == pp {
- bufp = bufn
- }
- p, p0 = pp, pp
- } else {
- p += rune.Size()
- }
- }
- }
- }
- // Append weights for the matched contraction, which may be an expansion.
- i, n := scan.result()
- ce = Elem(t.ContractElem[i+offset])
- if ce.ctype() == ceNormal {
- w = append(w, ce)
- } else {
- w = t.appendExpansion(w, ce)
- }
- // Append weights for the runes in the segment not part of the contraction.
- for b, p := buf[:bufp], 0; len(b) > 0; b = b[p:] {
- w, p = t.appendNext(w, source{bytes: b})
- }
- return w, n
-}
-
-// TODO: unify the two implementations. This is best done after first simplifying
-// the algorithm taking into account the inclusion of both NFC and NFD forms
-// in the table.
-func (t *Table) matchContractionString(w []Elem, ce Elem, suffix string) ([]Elem, int) {
- index, n, offset := splitContractIndex(ce)
-
- scan := t.ContractTries.scannerString(index, n, suffix)
- buf := [norm.MaxSegmentSize]byte{}
- bufp := 0
- p := scan.scan(0)
-
- if !scan.done && p < len(suffix) && suffix[p] >= utf8.RuneSelf {
- // By now we should have filtered most cases.
- p0 := p
- bufn := 0
- rune := norm.NFD.PropertiesString(suffix[p:])
- p += rune.Size()
- if rune.LeadCCC() != 0 {
- prevCC := rune.TrailCCC()
- // A gap may only occur in the last normalization segment.
- // This also ensures that len(scan.s) < norm.MaxSegmentSize.
- if end := norm.NFD.FirstBoundaryInString(suffix[p:]); end != -1 {
- scan.s = suffix[:p+end]
- }
- for p < len(suffix) && !scan.done && suffix[p] >= utf8.RuneSelf {
- rune = norm.NFD.PropertiesString(suffix[p:])
- if ccc := rune.LeadCCC(); ccc == 0 || prevCC >= ccc {
- break
- }
- prevCC = rune.TrailCCC()
- if pp := scan.scan(p); pp != p {
- // Copy the interstitial runes for later processing.
- bufn += copy(buf[bufn:], suffix[p0:p])
- if scan.pindex == pp {
- bufp = bufn
- }
- p, p0 = pp, pp
- } else {
- p += rune.Size()
- }
- }
- }
- }
- // Append weights for the matched contraction, which may be an expansion.
- i, n := scan.result()
- ce = Elem(t.ContractElem[i+offset])
- if ce.ctype() == ceNormal {
- w = append(w, ce)
- } else {
- w = t.appendExpansion(w, ce)
- }
- // Append weights for the runes in the segment not part of the contraction.
- for b, p := buf[:bufp], 0; len(b) > 0; b = b[p:] {
- w, p = t.appendNext(w, source{bytes: b})
- }
- return w, n
-}
diff --git a/vendor/golang.org/x/text/internal/colltab/trie.go b/vendor/golang.org/x/text/internal/colltab/trie.go
deleted file mode 100644
index a0eaa0d..0000000
--- a/vendor/golang.org/x/text/internal/colltab/trie.go
+++ /dev/null
@@ -1,159 +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.
-
-// The trie in this file is used to associate the first full character in an
-// UTF-8 string to a collation element. All but the last byte in a UTF-8 byte
-// sequence are used to lookup offsets in the index table to be used for the
-// next byte. The last byte is used to index into a table of collation elements.
-// For a full description, see go.text/collate/build/trie.go.
-
-package colltab
-
-const blockSize = 64
-
-type Trie struct {
- Index0 []uint16 // index for first byte (0xC0-0xFF)
- Values0 []uint32 // index for first byte (0x00-0x7F)
- Index []uint16
- Values []uint32
-}
-
-const (
- t1 = 0x00 // 0000 0000
- tx = 0x80 // 1000 0000
- t2 = 0xC0 // 1100 0000
- t3 = 0xE0 // 1110 0000
- t4 = 0xF0 // 1111 0000
- t5 = 0xF8 // 1111 1000
- t6 = 0xFC // 1111 1100
- te = 0xFE // 1111 1110
-)
-
-func (t *Trie) lookupValue(n uint16, b byte) Elem {
- return Elem(t.Values[int(n)<<6+int(b)])
-}
-
-// lookup returns the trie value for the first UTF-8 encoding in s and
-// the width in bytes of this encoding. The size will be 0 if s does not
-// hold enough bytes to complete the encoding. len(s) must be greater than 0.
-func (t *Trie) lookup(s []byte) (v Elem, sz int) {
- c0 := s[0]
- switch {
- case c0 < tx:
- return Elem(t.Values0[c0]), 1
- case c0 < t2:
- return 0, 1
- case c0 < t3:
- if len(s) < 2 {
- return 0, 0
- }
- i := t.Index0[c0]
- c1 := s[1]
- if c1 < tx || t2 <= c1 {
- return 0, 1
- }
- return t.lookupValue(i, c1), 2
- case c0 < t4:
- if len(s) < 3 {
- return 0, 0
- }
- i := t.Index0[c0]
- c1 := s[1]
- if c1 < tx || t2 <= c1 {
- return 0, 1
- }
- o := int(i)<<6 + int(c1)
- i = t.Index[o]
- c2 := s[2]
- if c2 < tx || t2 <= c2 {
- return 0, 2
- }
- return t.lookupValue(i, c2), 3
- case c0 < t5:
- if len(s) < 4 {
- return 0, 0
- }
- i := t.Index0[c0]
- c1 := s[1]
- if c1 < tx || t2 <= c1 {
- return 0, 1
- }
- o := int(i)<<6 + int(c1)
- i = t.Index[o]
- c2 := s[2]
- if c2 < tx || t2 <= c2 {
- return 0, 2
- }
- o = int(i)<<6 + int(c2)
- i = t.Index[o]
- c3 := s[3]
- if c3 < tx || t2 <= c3 {
- return 0, 3
- }
- return t.lookupValue(i, c3), 4
- }
- // Illegal rune
- return 0, 1
-}
-
-// The body of lookupString is a verbatim copy of that of lookup.
-func (t *Trie) lookupString(s string) (v Elem, sz int) {
- c0 := s[0]
- switch {
- case c0 < tx:
- return Elem(t.Values0[c0]), 1
- case c0 < t2:
- return 0, 1
- case c0 < t3:
- if len(s) < 2 {
- return 0, 0
- }
- i := t.Index0[c0]
- c1 := s[1]
- if c1 < tx || t2 <= c1 {
- return 0, 1
- }
- return t.lookupValue(i, c1), 2
- case c0 < t4:
- if len(s) < 3 {
- return 0, 0
- }
- i := t.Index0[c0]
- c1 := s[1]
- if c1 < tx || t2 <= c1 {
- return 0, 1
- }
- o := int(i)<<6 + int(c1)
- i = t.Index[o]
- c2 := s[2]
- if c2 < tx || t2 <= c2 {
- return 0, 2
- }
- return t.lookupValue(i, c2), 3
- case c0 < t5:
- if len(s) < 4 {
- return 0, 0
- }
- i := t.Index0[c0]
- c1 := s[1]
- if c1 < tx || t2 <= c1 {
- return 0, 1
- }
- o := int(i)<<6 + int(c1)
- i = t.Index[o]
- c2 := s[2]
- if c2 < tx || t2 <= c2 {
- return 0, 2
- }
- o = int(i)<<6 + int(c2)
- i = t.Index[o]
- c3 := s[3]
- if c3 < tx || t2 <= c3 {
- return 0, 3
- }
- return t.lookupValue(i, c3), 4
- }
- // Illegal rune
- return 0, 1
-}
diff --git a/vendor/golang.org/x/text/internal/colltab/weighter.go b/vendor/golang.org/x/text/internal/colltab/weighter.go
deleted file mode 100644
index f1ec45f..0000000
--- a/vendor/golang.org/x/text/internal/colltab/weighter.go
+++ /dev/null
@@ -1,31 +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 colltab // import "golang.org/x/text/internal/colltab"
-
-// A Weighter can be used as a source for Collator and Searcher.
-type Weighter interface {
- // Start finds the start of the segment that includes position p.
- Start(p int, b []byte) int
-
- // StartString finds the start of the segment that includes position p.
- StartString(p int, s string) int
-
- // AppendNext appends Elems to buf corresponding to the longest match
- // of a single character or contraction from the start of s.
- // It returns the new buf and the number of bytes consumed.
- AppendNext(buf []Elem, s []byte) (ce []Elem, n int)
-
- // AppendNextString appends Elems to buf corresponding to the longest match
- // of a single character or contraction from the start of s.
- // It returns the new buf and the number of bytes consumed.
- AppendNextString(buf []Elem, s string) (ce []Elem, n int)
-
- // Domain returns a slice of all single characters and contractions for which
- // collation elements are defined in this table.
- Domain() []string
-
- // Top returns the highest variable primary value.
- Top() uint32
-}
diff --git a/vendor/golang.org/x/text/internal/format/format.go b/vendor/golang.org/x/text/internal/format/format.go
deleted file mode 100644
index ee1c57a..0000000
--- a/vendor/golang.org/x/text/internal/format/format.go
+++ /dev/null
@@ -1,41 +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 format contains types for defining language-specific formatting of
-// values.
-//
-// This package is internal now, but will eventually be exposed after the API
-// settles.
-package format // import "golang.org/x/text/internal/format"
-
-import (
- "fmt"
-
- "golang.org/x/text/language"
-)
-
-// State represents the printer state passed to custom formatters. It provides
-// access to the fmt.State interface and the sentence and language-related
-// context.
-type State interface {
- fmt.State
-
- // Language reports the requested language in which to render a message.
- Language() language.Tag
-
- // TODO: consider this and removing rune from the Format method in the
- // Formatter interface.
- //
- // Verb returns the format variant to render, analogous to the types used
- // in fmt. Use 'v' for the default or only variant.
- // Verb() rune
-
- // TODO: more info:
- // - sentence context such as linguistic features passed by the translator.
-}
-
-// Formatter is analogous to fmt.Formatter.
-type Formatter interface {
- Format(state State, verb rune)
-}
diff --git a/vendor/golang.org/x/text/internal/format/parser.go b/vendor/golang.org/x/text/internal/format/parser.go
deleted file mode 100644
index 855aed7..0000000
--- a/vendor/golang.org/x/text/internal/format/parser.go
+++ /dev/null
@@ -1,358 +0,0 @@
-// Copyright 2017 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 format
-
-import (
- "reflect"
- "unicode/utf8"
-)
-
-// A Parser parses a format string. The result from the parse are set in the
-// struct fields.
-type Parser struct {
- Verb rune
-
- WidthPresent bool
- PrecPresent bool
- Minus bool
- Plus bool
- Sharp bool
- Space bool
- Zero bool
-
- // For the formats %+v %#v, we set the plusV/sharpV flags
- // and clear the plus/sharp flags since %+v and %#v are in effect
- // different, flagless formats set at the top level.
- PlusV bool
- SharpV bool
-
- HasIndex bool
-
- Width int
- Prec int // precision
-
- // retain arguments across calls.
- Args []interface{}
- // retain current argument number across calls
- ArgNum int
-
- // reordered records whether the format string used argument reordering.
- Reordered bool
- // goodArgNum records whether the most recent reordering directive was valid.
- goodArgNum bool
-
- // position info
- format string
- startPos int
- endPos int
- Status Status
-}
-
-// Reset initializes a parser to scan format strings for the given args.
-func (p *Parser) Reset(args []interface{}) {
- p.Args = args
- p.ArgNum = 0
- p.startPos = 0
- p.Reordered = false
-}
-
-// Text returns the part of the format string that was parsed by the last call
-// to Scan. It returns the original substitution clause if the current scan
-// parsed a substitution.
-func (p *Parser) Text() string { return p.format[p.startPos:p.endPos] }
-
-// SetFormat sets a new format string to parse. It does not reset the argument
-// count.
-func (p *Parser) SetFormat(format string) {
- p.format = format
- p.startPos = 0
- p.endPos = 0
-}
-
-// Status indicates the result type of a call to Scan.
-type Status int
-
-const (
- StatusText Status = iota
- StatusSubstitution
- StatusBadWidthSubstitution
- StatusBadPrecSubstitution
- StatusNoVerb
- StatusBadArgNum
- StatusMissingArg
-)
-
-// ClearFlags reset the parser to default behavior.
-func (p *Parser) ClearFlags() {
- p.WidthPresent = false
- p.PrecPresent = false
- p.Minus = false
- p.Plus = false
- p.Sharp = false
- p.Space = false
- p.Zero = false
-
- p.PlusV = false
- p.SharpV = false
-
- p.HasIndex = false
-}
-
-// Scan scans the next part of the format string and sets the status to
-// indicate whether it scanned a string literal, substitution or error.
-func (p *Parser) Scan() bool {
- p.Status = StatusText
- format := p.format
- end := len(format)
- if p.endPos >= end {
- return false
- }
- afterIndex := false // previous item in format was an index like [3].
-
- p.startPos = p.endPos
- p.goodArgNum = true
- i := p.startPos
- for i < end && format[i] != '%' {
- i++
- }
- if i > p.startPos {
- p.endPos = i
- return true
- }
- // Process one verb
- i++
-
- p.Status = StatusSubstitution
-
- // Do we have flags?
- p.ClearFlags()
-
-simpleFormat:
- for ; i < end; i++ {
- c := p.format[i]
- switch c {
- case '#':
- p.Sharp = true
- case '0':
- p.Zero = !p.Minus // Only allow zero padding to the left.
- case '+':
- p.Plus = true
- case '-':
- p.Minus = true
- p.Zero = false // Do not pad with zeros to the right.
- case ' ':
- p.Space = true
- default:
- // Fast path for common case of ascii lower case simple verbs
- // without precision or width or argument indices.
- if 'a' <= c && c <= 'z' && p.ArgNum < len(p.Args) {
- if c == 'v' {
- // Go syntax
- p.SharpV = p.Sharp
- p.Sharp = false
- // Struct-field syntax
- p.PlusV = p.Plus
- p.Plus = false
- }
- p.Verb = rune(c)
- p.ArgNum++
- p.endPos = i + 1
- return true
- }
- // Format is more complex than simple flags and a verb or is malformed.
- break simpleFormat
- }
- }
-
- // Do we have an explicit argument index?
- i, afterIndex = p.updateArgNumber(format, i)
-
- // Do we have width?
- if i < end && format[i] == '*' {
- i++
- p.Width, p.WidthPresent = p.intFromArg()
-
- if !p.WidthPresent {
- p.Status = StatusBadWidthSubstitution
- }
-
- // We have a negative width, so take its value and ensure
- // that the minus flag is set
- if p.Width < 0 {
- p.Width = -p.Width
- p.Minus = true
- p.Zero = false // Do not pad with zeros to the right.
- }
- afterIndex = false
- } else {
- p.Width, p.WidthPresent, i = parsenum(format, i, end)
- if afterIndex && p.WidthPresent { // "%[3]2d"
- p.goodArgNum = false
- }
- }
-
- // Do we have precision?
- if i+1 < end && format[i] == '.' {
- i++
- if afterIndex { // "%[3].2d"
- p.goodArgNum = false
- }
- i, afterIndex = p.updateArgNumber(format, i)
- if i < end && format[i] == '*' {
- i++
- p.Prec, p.PrecPresent = p.intFromArg()
- // Negative precision arguments don't make sense
- if p.Prec < 0 {
- p.Prec = 0
- p.PrecPresent = false
- }
- if !p.PrecPresent {
- p.Status = StatusBadPrecSubstitution
- }
- afterIndex = false
- } else {
- p.Prec, p.PrecPresent, i = parsenum(format, i, end)
- if !p.PrecPresent {
- p.Prec = 0
- p.PrecPresent = true
- }
- }
- }
-
- if !afterIndex {
- i, afterIndex = p.updateArgNumber(format, i)
- }
- p.HasIndex = afterIndex
-
- if i >= end {
- p.endPos = i
- p.Status = StatusNoVerb
- return true
- }
-
- verb, w := utf8.DecodeRuneInString(format[i:])
- p.endPos = i + w
- p.Verb = verb
-
- switch {
- case verb == '%': // Percent does not absorb operands and ignores f.wid and f.prec.
- p.startPos = p.endPos - 1
- p.Status = StatusText
- case !p.goodArgNum:
- p.Status = StatusBadArgNum
- case p.ArgNum >= len(p.Args): // No argument left over to print for the current verb.
- p.Status = StatusMissingArg
- p.ArgNum++
- case verb == 'v':
- // Go syntax
- p.SharpV = p.Sharp
- p.Sharp = false
- // Struct-field syntax
- p.PlusV = p.Plus
- p.Plus = false
- fallthrough
- default:
- p.ArgNum++
- }
- return true
-}
-
-// intFromArg gets the ArgNumth element of Args. On return, isInt reports
-// whether the argument has integer type.
-func (p *Parser) intFromArg() (num int, isInt bool) {
- if p.ArgNum < len(p.Args) {
- arg := p.Args[p.ArgNum]
- num, isInt = arg.(int) // Almost always OK.
- if !isInt {
- // Work harder.
- switch v := reflect.ValueOf(arg); v.Kind() {
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- n := v.Int()
- if int64(int(n)) == n {
- num = int(n)
- isInt = true
- }
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
- n := v.Uint()
- if int64(n) >= 0 && uint64(int(n)) == n {
- num = int(n)
- isInt = true
- }
- default:
- // Already 0, false.
- }
- }
- p.ArgNum++
- if tooLarge(num) {
- num = 0
- isInt = false
- }
- }
- return
-}
-
-// parseArgNumber returns the value of the bracketed number, minus 1
-// (explicit argument numbers are one-indexed but we want zero-indexed).
-// The opening bracket is known to be present at format[0].
-// The returned values are the index, the number of bytes to consume
-// up to the closing paren, if present, and whether the number parsed
-// ok. The bytes to consume will be 1 if no closing paren is present.
-func parseArgNumber(format string) (index int, wid int, ok bool) {
- // There must be at least 3 bytes: [n].
- if len(format) < 3 {
- return 0, 1, false
- }
-
- // Find closing bracket.
- for i := 1; i < len(format); i++ {
- if format[i] == ']' {
- width, ok, newi := parsenum(format, 1, i)
- if !ok || newi != i {
- return 0, i + 1, false
- }
- return width - 1, i + 1, true // arg numbers are one-indexed and skip paren.
- }
- }
- return 0, 1, false
-}
-
-// updateArgNumber returns the next argument to evaluate, which is either the value of the passed-in
-// argNum or the value of the bracketed integer that begins format[i:]. It also returns
-// the new value of i, that is, the index of the next byte of the format to process.
-func (p *Parser) updateArgNumber(format string, i int) (newi int, found bool) {
- if len(format) <= i || format[i] != '[' {
- return i, false
- }
- p.Reordered = true
- index, wid, ok := parseArgNumber(format[i:])
- if ok && 0 <= index && index < len(p.Args) {
- p.ArgNum = index
- return i + wid, true
- }
- p.goodArgNum = false
- return i + wid, ok
-}
-
-// tooLarge reports whether the magnitude of the integer is
-// too large to be used as a formatting width or precision.
-func tooLarge(x int) bool {
- const max int = 1e6
- return x > max || x < -max
-}
-
-// parsenum converts ASCII to integer. num is 0 (and isnum is false) if no number present.
-func parsenum(s string, start, end int) (num int, isnum bool, newi int) {
- if start >= end {
- return 0, false, end
- }
- for newi = start; newi < end && '0' <= s[newi] && s[newi] <= '9'; newi++ {
- if tooLarge(num) {
- return 0, false, end // Overflow; crazy long number most likely.
- }
- num = num*10 + int(s[newi]-'0')
- isnum = true
- }
- return
-}
diff --git a/vendor/golang.org/x/text/internal/gen/code.go b/vendor/golang.org/x/text/internal/gen/code.go
deleted file mode 100644
index 75435c9..0000000
--- a/vendor/golang.org/x/text/internal/gen/code.go
+++ /dev/null
@@ -1,375 +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 gen
-
-import (
- "bytes"
- "encoding/gob"
- "fmt"
- "hash"
- "hash/fnv"
- "io"
- "log"
- "os"
- "reflect"
- "strings"
- "unicode"
- "unicode/utf8"
-)
-
-// This file contains utilities for generating code.
-
-// TODO: other write methods like:
-// - slices, maps, types, etc.
-
-// CodeWriter is a utility for writing structured code. It computes the content
-// hash and size of written content. It ensures there are newlines between
-// written code blocks.
-type CodeWriter struct {
- buf bytes.Buffer
- Size int
- Hash hash.Hash32 // content hash
- gob *gob.Encoder
- // For comments we skip the usual one-line separator if they are followed by
- // a code block.
- skipSep bool
-}
-
-func (w *CodeWriter) Write(p []byte) (n int, err error) {
- return w.buf.Write(p)
-}
-
-// NewCodeWriter returns a new CodeWriter.
-func NewCodeWriter() *CodeWriter {
- h := fnv.New32()
- return &CodeWriter{Hash: h, gob: gob.NewEncoder(h)}
-}
-
-// WriteGoFile appends the buffer with the total size of all created structures
-// and writes it as a Go file to the given file with the given package name.
-func (w *CodeWriter) WriteGoFile(filename, pkg string) {
- f, err := os.Create(filename)
- if err != nil {
- log.Fatalf("Could not create file %s: %v", filename, err)
- }
- defer f.Close()
- if _, err = w.WriteGo(f, pkg, ""); err != nil {
- log.Fatalf("Error writing file %s: %v", filename, err)
- }
-}
-
-// WriteVersionedGoFile appends the buffer with the total size of all created
-// structures and writes it as a Go file to the given file with the given
-// package name and build tags for the current Unicode version,
-func (w *CodeWriter) WriteVersionedGoFile(filename, pkg string) {
- tags := buildTags()
- if tags != "" {
- pattern := fileToPattern(filename)
- updateBuildTags(pattern)
- filename = fmt.Sprintf(pattern, UnicodeVersion())
- }
- f, err := os.Create(filename)
- if err != nil {
- log.Fatalf("Could not create file %s: %v", filename, err)
- }
- defer f.Close()
- if _, err = w.WriteGo(f, pkg, tags); err != nil {
- log.Fatalf("Error writing file %s: %v", filename, err)
- }
-}
-
-// WriteGo appends the buffer with the total size of all created structures and
-// writes it as a Go file to the given writer with the given package name.
-func (w *CodeWriter) WriteGo(out io.Writer, pkg, tags string) (n int, err error) {
- sz := w.Size
- if sz > 0 {
- w.WriteComment("Total table size %d bytes (%dKiB); checksum: %X\n", sz, sz/1024, w.Hash.Sum32())
- }
- defer w.buf.Reset()
- return WriteGo(out, pkg, tags, w.buf.Bytes())
-}
-
-func (w *CodeWriter) printf(f string, x ...interface{}) {
- fmt.Fprintf(w, f, x...)
-}
-
-func (w *CodeWriter) insertSep() {
- if w.skipSep {
- w.skipSep = false
- return
- }
- // Use at least two newlines to ensure a blank space between the previous
- // block. WriteGoFile will remove extraneous newlines.
- w.printf("\n\n")
-}
-
-// WriteComment writes a comment block. All line starts are prefixed with "//".
-// Initial empty lines are gobbled. The indentation for the first line is
-// stripped from consecutive lines.
-func (w *CodeWriter) WriteComment(comment string, args ...interface{}) {
- s := fmt.Sprintf(comment, args...)
- s = strings.Trim(s, "\n")
-
- // Use at least two newlines to ensure a blank space between the previous
- // block. WriteGoFile will remove extraneous newlines.
- w.printf("\n\n// ")
- w.skipSep = true
-
- // strip first indent level.
- sep := "\n"
- for ; len(s) > 0 && (s[0] == '\t' || s[0] == ' '); s = s[1:] {
- sep += s[:1]
- }
-
- strings.NewReplacer(sep, "\n// ", "\n", "\n// ").WriteString(w, s)
-
- w.printf("\n")
-}
-
-func (w *CodeWriter) writeSizeInfo(size int) {
- w.printf("// Size: %d bytes\n", size)
-}
-
-// WriteConst writes a constant of the given name and value.
-func (w *CodeWriter) WriteConst(name string, x interface{}) {
- w.insertSep()
- v := reflect.ValueOf(x)
-
- switch v.Type().Kind() {
- case reflect.String:
- w.printf("const %s %s = ", name, typeName(x))
- w.WriteString(v.String())
- w.printf("\n")
- default:
- w.printf("const %s = %#v\n", name, x)
- }
-}
-
-// WriteVar writes a variable of the given name and value.
-func (w *CodeWriter) WriteVar(name string, x interface{}) {
- w.insertSep()
- v := reflect.ValueOf(x)
- oldSize := w.Size
- sz := int(v.Type().Size())
- w.Size += sz
-
- switch v.Type().Kind() {
- case reflect.String:
- w.printf("var %s %s = ", name, typeName(x))
- w.WriteString(v.String())
- case reflect.Struct:
- w.gob.Encode(x)
- fallthrough
- case reflect.Slice, reflect.Array:
- w.printf("var %s = ", name)
- w.writeValue(v)
- w.writeSizeInfo(w.Size - oldSize)
- default:
- w.printf("var %s %s = ", name, typeName(x))
- w.gob.Encode(x)
- w.writeValue(v)
- w.writeSizeInfo(w.Size - oldSize)
- }
- w.printf("\n")
-}
-
-func (w *CodeWriter) writeValue(v reflect.Value) {
- x := v.Interface()
- switch v.Kind() {
- case reflect.String:
- w.WriteString(v.String())
- case reflect.Array:
- // Don't double count: callers of WriteArray count on the size being
- // added, so we need to discount it here.
- w.Size -= int(v.Type().Size())
- w.writeSlice(x, true)
- case reflect.Slice:
- w.writeSlice(x, false)
- case reflect.Struct:
- w.printf("%s{\n", typeName(v.Interface()))
- t := v.Type()
- for i := 0; i < v.NumField(); i++ {
- w.printf("%s: ", t.Field(i).Name)
- w.writeValue(v.Field(i))
- w.printf(",\n")
- }
- w.printf("}")
- default:
- w.printf("%#v", x)
- }
-}
-
-// WriteString writes a string literal.
-func (w *CodeWriter) WriteString(s string) {
- io.WriteString(w.Hash, s) // content hash
- w.Size += len(s)
-
- const maxInline = 40
- if len(s) <= maxInline {
- w.printf("%q", s)
- return
- }
-
- // We will render the string as a multi-line string.
- const maxWidth = 80 - 4 - len(`"`) - len(`" +`)
-
- // When starting on its own line, go fmt indents line 2+ an extra level.
- n, max := maxWidth, maxWidth-4
-
- // As per https://golang.org/issue/18078, the compiler has trouble
- // compiling the concatenation of many strings, s0 + s1 + s2 + ... + sN,
- // for large N. We insert redundant, explicit parentheses to work around
- // that, lowering the N at any given step: (s0 + s1 + ... + s63) + (s64 +
- // ... + s127) + etc + (etc + ... + sN).
- explicitParens, extraComment := len(s) > 128*1024, ""
- if explicitParens {
- w.printf(`(`)
- extraComment = "; the redundant, explicit parens are for https://golang.org/issue/18078"
- }
-
- // Print "" +\n, if a string does not start on its own line.
- b := w.buf.Bytes()
- if p := len(bytes.TrimRight(b, " \t")); p > 0 && b[p-1] != '\n' {
- w.printf("\"\" + // Size: %d bytes%s\n", len(s), extraComment)
- n, max = maxWidth, maxWidth
- }
-
- w.printf(`"`)
-
- for sz, p, nLines := 0, 0, 0; p < len(s); {
- var r rune
- r, sz = utf8.DecodeRuneInString(s[p:])
- out := s[p : p+sz]
- chars := 1
- if !unicode.IsPrint(r) || r == utf8.RuneError || r == '"' {
- switch sz {
- case 1:
- out = fmt.Sprintf("\\x%02x", s[p])
- case 2, 3:
- out = fmt.Sprintf("\\u%04x", r)
- case 4:
- out = fmt.Sprintf("\\U%08x", r)
- }
- chars = len(out)
- } else if r == '\\' {
- out = "\\" + string(r)
- chars = 2
- }
- if n -= chars; n < 0 {
- nLines++
- if explicitParens && nLines&63 == 63 {
- w.printf("\") + (\"")
- }
- w.printf("\" +\n\"")
- n = max - len(out)
- }
- w.printf("%s", out)
- p += sz
- }
- w.printf(`"`)
- if explicitParens {
- w.printf(`)`)
- }
-}
-
-// WriteSlice writes a slice value.
-func (w *CodeWriter) WriteSlice(x interface{}) {
- w.writeSlice(x, false)
-}
-
-// WriteArray writes an array value.
-func (w *CodeWriter) WriteArray(x interface{}) {
- w.writeSlice(x, true)
-}
-
-func (w *CodeWriter) writeSlice(x interface{}, isArray bool) {
- v := reflect.ValueOf(x)
- w.gob.Encode(v.Len())
- w.Size += v.Len() * int(v.Type().Elem().Size())
- name := typeName(x)
- if isArray {
- name = fmt.Sprintf("[%d]%s", v.Len(), name[strings.Index(name, "]")+1:])
- }
- if isArray {
- w.printf("%s{\n", name)
- } else {
- w.printf("%s{ // %d elements\n", name, v.Len())
- }
-
- switch kind := v.Type().Elem().Kind(); kind {
- case reflect.String:
- for _, s := range x.([]string) {
- w.WriteString(s)
- w.printf(",\n")
- }
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
- reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
- // nLine and nBlock are the number of elements per line and block.
- nLine, nBlock, format := 8, 64, "%d,"
- switch kind {
- case reflect.Uint8:
- format = "%#02x,"
- case reflect.Uint16:
- format = "%#04x,"
- case reflect.Uint32:
- nLine, nBlock, format = 4, 32, "%#08x,"
- case reflect.Uint, reflect.Uint64:
- nLine, nBlock, format = 4, 32, "%#016x,"
- case reflect.Int8:
- nLine = 16
- }
- n := nLine
- for i := 0; i < v.Len(); i++ {
- if i%nBlock == 0 && v.Len() > nBlock {
- w.printf("// Entry %X - %X\n", i, i+nBlock-1)
- }
- x := v.Index(i).Interface()
- w.gob.Encode(x)
- w.printf(format, x)
- if n--; n == 0 {
- n = nLine
- w.printf("\n")
- }
- }
- w.printf("\n")
- case reflect.Struct:
- zero := reflect.Zero(v.Type().Elem()).Interface()
- for i := 0; i < v.Len(); i++ {
- x := v.Index(i).Interface()
- w.gob.EncodeValue(v)
- if !reflect.DeepEqual(zero, x) {
- line := fmt.Sprintf("%#v,\n", x)
- line = line[strings.IndexByte(line, '{'):]
- w.printf("%d: ", i)
- w.printf(line)
- }
- }
- case reflect.Array:
- for i := 0; i < v.Len(); i++ {
- w.printf("%d: %#v,\n", i, v.Index(i).Interface())
- }
- default:
- panic("gen: slice elem type not supported")
- }
- w.printf("}")
-}
-
-// WriteType writes a definition of the type of the given value and returns the
-// type name.
-func (w *CodeWriter) WriteType(x interface{}) string {
- t := reflect.TypeOf(x)
- w.printf("type %s struct {\n", t.Name())
- for i := 0; i < t.NumField(); i++ {
- w.printf("\t%s %s\n", t.Field(i).Name, t.Field(i).Type)
- }
- w.printf("}\n")
- return t.Name()
-}
-
-// typeName returns the name of the go type of x.
-func typeName(x interface{}) string {
- t := reflect.ValueOf(x).Type()
- return strings.Replace(fmt.Sprint(t), "main.", "", 1)
-}
diff --git a/vendor/golang.org/x/text/internal/gen/gen.go b/vendor/golang.org/x/text/internal/gen/gen.go
deleted file mode 100644
index 78bfef6..0000000
--- a/vendor/golang.org/x/text/internal/gen/gen.go
+++ /dev/null
@@ -1,354 +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 gen contains common code for the various code generation tools in the
-// text repository. Its usage ensures consistency between tools.
-//
-// This package defines command line flags that are common to most generation
-// tools. The flags allow for specifying specific Unicode and CLDR versions
-// in the public Unicode data repository (https://www.unicode.org/Public).
-//
-// A local Unicode data mirror can be set through the flag -local or the
-// environment variable UNICODE_DIR. The former takes precedence. The local
-// directory should follow the same structure as the public repository.
-//
-// IANA data can also optionally be mirrored by putting it in the iana directory
-// rooted at the top of the local mirror. Beware, though, that IANA data is not
-// versioned. So it is up to the developer to use the right version.
-package gen // import "golang.org/x/text/internal/gen"
-
-import (
- "bytes"
- "flag"
- "fmt"
- "go/build"
- "go/format"
- "io"
- "log"
- "net/http"
- "os"
- "path"
- "path/filepath"
- "regexp"
- "strings"
- "sync"
- "unicode"
-
- "golang.org/x/text/unicode/cldr"
-)
-
-var (
- url = flag.String("url",
- "https://www.unicode.org/Public",
- "URL of Unicode database directory")
- iana = flag.String("iana",
- "http://www.iana.org",
- "URL of the IANA repository")
- unicodeVersion = flag.String("unicode",
- getEnv("UNICODE_VERSION", unicode.Version),
- "unicode version to use")
- cldrVersion = flag.String("cldr",
- getEnv("CLDR_VERSION", cldr.Version),
- "cldr version to use")
-)
-
-func getEnv(name, def string) string {
- if v := os.Getenv(name); v != "" {
- return v
- }
- return def
-}
-
-// Init performs common initialization for a gen command. It parses the flags
-// and sets up the standard logging parameters.
-func Init() {
- log.SetPrefix("")
- log.SetFlags(log.Lshortfile)
- flag.Parse()
-}
-
-const header = `// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-`
-
-// UnicodeVersion reports the requested Unicode version.
-func UnicodeVersion() string {
- return *unicodeVersion
-}
-
-// CLDRVersion reports the requested CLDR version.
-func CLDRVersion() string {
- return *cldrVersion
-}
-
-var tags = []struct{ version, buildTags string }{
- {"9.0.0", "!go1.10"},
- {"10.0.0", "go1.10,!go1.13"},
- {"11.0.0", "go1.13,!go1.14"},
- {"12.0.0", "go1.14,!go1.16"},
- {"13.0.0", "go1.16,!go1.21"},
- {"15.0.0", "go1.21"},
-}
-
-// buildTags reports the build tags used for the current Unicode version.
-func buildTags() string {
- v := UnicodeVersion()
- for _, e := range tags {
- if e.version == v {
- return e.buildTags
- }
- }
- log.Fatalf("Unknown build tags for Unicode version %q.", v)
- return ""
-}
-
-// IsLocal reports whether data files are available locally.
-func IsLocal() bool {
- dir, err := localReadmeFile()
- if err != nil {
- return false
- }
- if _, err = os.Stat(dir); err != nil {
- return false
- }
- return true
-}
-
-// OpenUCDFile opens the requested UCD file. The file is specified relative to
-// the public Unicode root directory. It will call log.Fatal if there are any
-// errors.
-func OpenUCDFile(file string) io.ReadCloser {
- return openUnicode(path.Join(*unicodeVersion, "ucd", file))
-}
-
-// OpenCLDRCoreZip opens the CLDR core zip file. It will call log.Fatal if there
-// are any errors.
-func OpenCLDRCoreZip() io.ReadCloser {
- return OpenUnicodeFile("cldr", *cldrVersion, "core.zip")
-}
-
-// OpenUnicodeFile opens the requested file of the requested category from the
-// root of the Unicode data archive. The file is specified relative to the
-// public Unicode root directory. If version is "", it will use the default
-// Unicode version. It will call log.Fatal if there are any errors.
-func OpenUnicodeFile(category, version, file string) io.ReadCloser {
- if version == "" {
- version = UnicodeVersion()
- }
- return openUnicode(path.Join(category, version, file))
-}
-
-// OpenIANAFile opens the requested IANA file. The file is specified relative
-// to the IANA root, which is typically either http://www.iana.org or the
-// iana directory in the local mirror. It will call log.Fatal if there are any
-// errors.
-func OpenIANAFile(path string) io.ReadCloser {
- return Open(*iana, "iana", path)
-}
-
-var (
- dirMutex sync.Mutex
- localDir string
-)
-
-const permissions = 0755
-
-func localReadmeFile() (string, error) {
- p, err := build.Import("golang.org/x/text", "", build.FindOnly)
- if err != nil {
- return "", fmt.Errorf("Could not locate package: %v", err)
- }
- return filepath.Join(p.Dir, "DATA", "README"), nil
-}
-
-func getLocalDir() string {
- dirMutex.Lock()
- defer dirMutex.Unlock()
-
- readme, err := localReadmeFile()
- if err != nil {
- log.Fatal(err)
- }
- dir := filepath.Dir(readme)
- if _, err := os.Stat(readme); err != nil {
- if err := os.MkdirAll(dir, permissions); err != nil {
- log.Fatalf("Could not create directory: %v", err)
- }
- os.WriteFile(readme, []byte(readmeTxt), permissions)
- }
- return dir
-}
-
-const readmeTxt = `Generated by golang.org/x/text/internal/gen. DO NOT EDIT.
-
-This directory contains downloaded files used to generate the various tables
-in the golang.org/x/text subrepo.
-
-Note that the language subtag repo (iana/assignments/language-subtag-registry)
-and all other times in the iana subdirectory are not versioned and will need
-to be periodically manually updated. The easiest way to do this is to remove
-the entire iana directory. This is mostly of concern when updating the language
-package.
-`
-
-// Open opens subdir/path if a local directory is specified and the file exists,
-// where subdir is a directory relative to the local root, or fetches it from
-// urlRoot/path otherwise. It will call log.Fatal if there are any errors.
-func Open(urlRoot, subdir, path string) io.ReadCloser {
- file := filepath.Join(getLocalDir(), subdir, filepath.FromSlash(path))
- return open(file, urlRoot, path)
-}
-
-func openUnicode(path string) io.ReadCloser {
- file := filepath.Join(getLocalDir(), filepath.FromSlash(path))
- return open(file, *url, path)
-}
-
-// TODO: automatically periodically update non-versioned files.
-
-func open(file, urlRoot, path string) io.ReadCloser {
- if f, err := os.Open(file); err == nil {
- return f
- }
- r := get(urlRoot, path)
- defer r.Close()
- b, err := io.ReadAll(r)
- if err != nil {
- log.Fatalf("Could not download file: %v", err)
- }
- os.MkdirAll(filepath.Dir(file), permissions)
- if err := os.WriteFile(file, b, permissions); err != nil {
- log.Fatalf("Could not create file: %v", err)
- }
- return io.NopCloser(bytes.NewReader(b))
-}
-
-func get(root, path string) io.ReadCloser {
- url := root + "/" + path
- fmt.Printf("Fetching %s...", url)
- defer fmt.Println(" done.")
- resp, err := http.Get(url)
- if err != nil {
- log.Fatalf("HTTP GET: %v", err)
- }
- if resp.StatusCode != 200 {
- log.Fatalf("Bad GET status for %q: %q", url, resp.Status)
- }
- return resp.Body
-}
-
-// TODO: use Write*Version in all applicable packages.
-
-// WriteUnicodeVersion writes a constant for the Unicode version from which the
-// tables are generated.
-func WriteUnicodeVersion(w io.Writer) {
- fmt.Fprintf(w, "// UnicodeVersion is the Unicode version from which the tables in this package are derived.\n")
- fmt.Fprintf(w, "const UnicodeVersion = %q\n\n", UnicodeVersion())
-}
-
-// WriteCLDRVersion writes a constant for the CLDR version from which the
-// tables are generated.
-func WriteCLDRVersion(w io.Writer) {
- fmt.Fprintf(w, "// CLDRVersion is the CLDR version from which the tables in this package are derived.\n")
- fmt.Fprintf(w, "const CLDRVersion = %q\n\n", CLDRVersion())
-}
-
-// WriteGoFile prepends a standard file comment and package statement to the
-// given bytes, applies gofmt, and writes them to a file with the given name.
-// It will call log.Fatal if there are any errors.
-func WriteGoFile(filename, pkg string, b []byte) {
- w, err := os.Create(filename)
- if err != nil {
- log.Fatalf("Could not create file %s: %v", filename, err)
- }
- defer w.Close()
- if _, err = WriteGo(w, pkg, "", b); err != nil {
- log.Fatalf("Error writing file %s: %v", filename, err)
- }
-}
-
-func fileToPattern(filename string) string {
- suffix := ".go"
- if strings.HasSuffix(filename, "_test.go") {
- suffix = "_test.go"
- }
- prefix := filename[:len(filename)-len(suffix)]
- return fmt.Sprint(prefix, "%s", suffix)
-}
-
-// tagLines returns the //go:build lines to add to the file.
-func tagLines(tags string) string {
- return "//go:build " + strings.ReplaceAll(tags, ",", " && ") + "\n"
-}
-
-func updateBuildTags(pattern string) {
- for _, t := range tags {
- oldFile := fmt.Sprintf(pattern, t.version)
- b, err := os.ReadFile(oldFile)
- if err != nil {
- continue
- }
- b = regexp.MustCompile(`//go:build.*\n`).ReplaceAll(b, []byte(tagLines(t.buildTags)))
- err = os.WriteFile(oldFile, b, 0644)
- if err != nil {
- log.Fatal(err)
- }
- }
-}
-
-// WriteVersionedGoFile prepends a standard file comment, adds build tags to
-// version the file for the current Unicode version, and package statement to
-// the given bytes, applies gofmt, and writes them to a file with the given
-// name. It will call log.Fatal if there are any errors.
-func WriteVersionedGoFile(filename, pkg string, b []byte) {
- pattern := fileToPattern(filename)
- updateBuildTags(pattern)
- filename = fmt.Sprintf(pattern, UnicodeVersion())
-
- w, err := os.Create(filename)
- if err != nil {
- log.Fatalf("Could not create file %s: %v", filename, err)
- }
- defer w.Close()
- if _, err = WriteGo(w, pkg, buildTags(), b); err != nil {
- log.Fatalf("Error writing file %s: %v", filename, err)
- }
-}
-
-// WriteGo prepends a standard file comment and package statement to the given
-// bytes, applies gofmt, and writes them to w.
-func WriteGo(w io.Writer, pkg, tags string, b []byte) (n int, err error) {
- src := []byte(header)
- if tags != "" {
- src = append(src, tagLines(tags)...)
- src = append(src, '\n')
- }
- src = append(src, fmt.Sprintf("package %s\n\n", pkg)...)
- src = append(src, b...)
- formatted, err := format.Source(src)
- if err != nil {
- // Print the generated code even in case of an error so that the
- // returned error can be meaningfully interpreted.
- n, _ = w.Write(src)
- return n, err
- }
- return w.Write(formatted)
-}
-
-// Repackage rewrites a Go file from belonging to package main to belonging to
-// the given package.
-func Repackage(inFile, outFile, pkg string) {
- src, err := os.ReadFile(inFile)
- if err != nil {
- log.Fatalf("reading %s: %v", inFile, err)
- }
- const toDelete = "package main\n\n"
- i := bytes.Index(src, []byte(toDelete))
- if i < 0 {
- log.Fatalf("Could not find %q in %s.", toDelete, inFile)
- }
- w := &bytes.Buffer{}
- w.Write(src[i+len(toDelete):])
- WriteGoFile(outFile, pkg, w.Bytes())
-}
diff --git a/vendor/golang.org/x/text/internal/internal.go b/vendor/golang.org/x/text/internal/internal.go
deleted file mode 100644
index 3cddbbd..0000000
--- a/vendor/golang.org/x/text/internal/internal.go
+++ /dev/null
@@ -1,49 +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 internal contains non-exported functionality that are used by
-// packages in the text repository.
-package internal // import "golang.org/x/text/internal"
-
-import (
- "sort"
-
- "golang.org/x/text/language"
-)
-
-// SortTags sorts tags in place.
-func SortTags(tags []language.Tag) {
- sort.Sort(sorter(tags))
-}
-
-type sorter []language.Tag
-
-func (s sorter) Len() int {
- return len(s)
-}
-
-func (s sorter) Swap(i, j int) {
- s[i], s[j] = s[j], s[i]
-}
-
-func (s sorter) Less(i, j int) bool {
- return s[i].String() < s[j].String()
-}
-
-// UniqueTags sorts and filters duplicate tags in place and returns a slice with
-// only unique tags.
-func UniqueTags(tags []language.Tag) []language.Tag {
- if len(tags) <= 1 {
- return tags
- }
- SortTags(tags)
- k := 0
- for i := 1; i < len(tags); i++ {
- if tags[k].String() < tags[i].String() {
- k++
- tags[k] = tags[i]
- }
- }
- return tags[:k+1]
-}
diff --git a/vendor/golang.org/x/text/internal/language/common.go b/vendor/golang.org/x/text/internal/language/common.go
deleted file mode 100644
index cdfdb74..0000000
--- a/vendor/golang.org/x/text/internal/language/common.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package language
-
-// This file contains code common to the maketables.go and the package code.
-
-// AliasType is the type of an alias in AliasMap.
-type AliasType int8
-
-const (
- Deprecated AliasType = iota
- Macro
- Legacy
-
- AliasTypeUnknown AliasType = -1
-)
diff --git a/vendor/golang.org/x/text/internal/language/compact.go b/vendor/golang.org/x/text/internal/language/compact.go
deleted file mode 100644
index 46a0015..0000000
--- a/vendor/golang.org/x/text/internal/language/compact.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2018 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
-
-// CompactCoreInfo is a compact integer with the three core tags encoded.
-type CompactCoreInfo uint32
-
-// GetCompactCore generates a uint32 value that is guaranteed to be unique for
-// different language, region, and script values.
-func GetCompactCore(t Tag) (cci CompactCoreInfo, ok bool) {
- if t.LangID > langNoIndexOffset {
- return 0, false
- }
- cci |= CompactCoreInfo(t.LangID) << (8 + 12)
- cci |= CompactCoreInfo(t.ScriptID) << 12
- cci |= CompactCoreInfo(t.RegionID)
- return cci, true
-}
-
-// Tag generates a tag from c.
-func (c CompactCoreInfo) Tag() Tag {
- return Tag{
- LangID: Language(c >> 20),
- RegionID: Region(c & 0x3ff),
- ScriptID: Script(c>>12) & 0xff,
- }
-}
diff --git a/vendor/golang.org/x/text/internal/language/compact/compact.go b/vendor/golang.org/x/text/internal/language/compact/compact.go
deleted file mode 100644
index 1b36935..0000000
--- a/vendor/golang.org/x/text/internal/language/compact/compact.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2018 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 compact defines a compact representation of language tags.
-//
-// Common language tags (at least all for which locale information is defined
-// in CLDR) are assigned a unique index. Each Tag is associated with such an
-// ID for selecting language-related resources (such as translations) as well
-// as one for selecting regional defaults (currency, number formatting, etc.)
-//
-// It may want to export this functionality at some point, but at this point
-// this is only available for use within x/text.
-package compact // import "golang.org/x/text/internal/language/compact"
-
-import (
- "sort"
- "strings"
-
- "golang.org/x/text/internal/language"
-)
-
-// ID is an integer identifying a single tag.
-type ID uint16
-
-func getCoreIndex(t language.Tag) (id ID, ok bool) {
- cci, ok := language.GetCompactCore(t)
- if !ok {
- return 0, false
- }
- i := sort.Search(len(coreTags), func(i int) bool {
- return cci <= coreTags[i]
- })
- if i == len(coreTags) || coreTags[i] != cci {
- return 0, false
- }
- return ID(i), true
-}
-
-// Parent returns the ID of the parent or the root ID if id is already the root.
-func (id ID) Parent() ID {
- return parents[id]
-}
-
-// Tag converts id to an internal language Tag.
-func (id ID) Tag() language.Tag {
- if int(id) >= len(coreTags) {
- return specialTags[int(id)-len(coreTags)]
- }
- return coreTags[id].Tag()
-}
-
-var specialTags []language.Tag
-
-func init() {
- tags := strings.Split(specialTagsStr, " ")
- specialTags = make([]language.Tag, len(tags))
- for i, t := range tags {
- specialTags[i] = language.MustParse(t)
- }
-}
diff --git a/vendor/golang.org/x/text/internal/language/compact/language.go b/vendor/golang.org/x/text/internal/language/compact/language.go
deleted file mode 100644
index 8c1b666..0000000
--- a/vendor/golang.org/x/text/internal/language/compact/language.go
+++ /dev/null
@@ -1,260 +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.
-
-//go:generate go run gen.go gen_index.go -output tables.go
-//go:generate go run gen_parents.go
-
-package compact
-
-// TODO: Remove above NOTE after:
-// - verifying that tables are dropped correctly (most notably matcher tables).
-
-import (
- "strings"
-
- "golang.org/x/text/internal/language"
-)
-
-// 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 {
- // NOTE: exported tags will become part of the public API.
- language ID
- locale ID
- full fullTag // always a language.Tag for now.
-}
-
-const _und = 0
-
-type fullTag interface {
- IsRoot() bool
- Parent() language.Tag
-}
-
-// Make a compact Tag from a fully specified internal language Tag.
-func Make(t language.Tag) (tag Tag) {
- if region := t.TypeForKey("rg"); len(region) == 6 && region[2:] == "zzzz" {
- if r, err := language.ParseRegion(region[:2]); err == nil {
- tFull := t
- t, _ = t.SetTypeForKey("rg", "")
- // TODO: should we not consider "va" for the language tag?
- var exact1, exact2 bool
- tag.language, exact1 = FromTag(t)
- t.RegionID = r
- tag.locale, exact2 = FromTag(t)
- if !exact1 || !exact2 {
- tag.full = tFull
- }
- return tag
- }
- }
- lang, ok := FromTag(t)
- tag.language = lang
- tag.locale = lang
- if !ok {
- tag.full = t
- }
- return tag
-}
-
-// Tag returns an internal language Tag version of this tag.
-func (t Tag) Tag() language.Tag {
- if t.full != nil {
- return t.full.(language.Tag)
- }
- tag := t.language.Tag()
- if t.language != t.locale {
- loc := t.locale.Tag()
- tag, _ = tag.SetTypeForKey("rg", strings.ToLower(loc.RegionID.String())+"zzzz")
- }
- return tag
-}
-
-// IsCompact reports whether this tag is fully defined in terms of ID.
-func (t *Tag) IsCompact() bool {
- return t.full == nil
-}
-
-// MayHaveVariants reports whether a tag may have variants. If it returns false
-// it is guaranteed the tag does not have variants.
-func (t Tag) MayHaveVariants() bool {
- return t.full != nil || int(t.language) >= len(coreTags)
-}
-
-// MayHaveExtensions reports whether a tag may have extensions. If it returns
-// false it is guaranteed the tag does not have them.
-func (t Tag) MayHaveExtensions() bool {
- return t.full != nil ||
- int(t.language) >= len(coreTags) ||
- t.language != t.locale
-}
-
-// IsRoot returns true if t is equal to language "und".
-func (t Tag) IsRoot() bool {
- if t.full != nil {
- return t.full.IsRoot()
- }
- return t.language == _und
-}
-
-// 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.full != nil {
- return Make(t.full.Parent())
- }
- if t.language != t.locale {
- // Simulate stripping -u-rg-xxxxxx
- return Tag{language: t.language, locale: t.language}
- }
- // TODO: use parent lookup table once cycle from internal package is
- // removed. Probably by internalizing the table and declaring this fast
- // enough.
- // lang := compactID(internal.Parent(uint16(t.language)))
- lang, _ := FromTag(t.language.Tag().Parent())
- return Tag{language: lang, locale: lang}
-}
-
-// nextToken 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:]
-}
-
-// LanguageID 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. If t does not match a compact
-// index, exact will be false and the compact index will be returned for the
-// first match after repeatedly taking the Parent of t.
-func LanguageID(t Tag) (id ID, exact bool) {
- return t.language, t.full == nil
-}
-
-// RegionalID returns the ID for the regional variant of this tag. This index is
-// used to indicate region-specific overrides, such as default currency, default
-// calendar and week data, default time cycle, and default measurement system
-// and unit preferences.
-//
-// For instance, the tag en-GB-u-rg-uszzzz specifies British English with US
-// settings for currency, number formatting, etc. The CompactIndex for this tag
-// will be that for en-GB, while the RegionalID will be the one corresponding to
-// en-US.
-func RegionalID(t Tag) (id ID, exact bool) {
- return t.locale, t.full == nil
-}
-
-// LanguageTag returns t stripped of regional variant indicators.
-//
-// At the moment this means it is stripped of a regional and variant subtag "rg"
-// and "va" in the "u" extension.
-func (t Tag) LanguageTag() Tag {
- if t.full == nil {
- return Tag{language: t.language, locale: t.language}
- }
- tt := t.Tag()
- tt.SetTypeForKey("rg", "")
- tt.SetTypeForKey("va", "")
- return Make(tt)
-}
-
-// RegionalTag returns the regional variant of the tag.
-//
-// At the moment this means that the region is set from the regional subtag
-// "rg" in the "u" extension.
-func (t Tag) RegionalTag() Tag {
- rt := Tag{language: t.locale, locale: t.locale}
- if t.full == nil {
- return rt
- }
- b := language.Builder{}
- tag := t.Tag()
- // tag, _ = tag.SetTypeForKey("rg", "")
- b.SetTag(t.locale.Tag())
- if v := tag.Variants(); v != "" {
- for _, v := range strings.Split(v, "-") {
- b.AddVariant(v)
- }
- }
- for _, e := range tag.Extensions() {
- b.AddExt(e)
- }
- return t
-}
-
-// FromTag reports closest matching ID for an internal language Tag.
-func FromTag(t language.Tag) (id ID, exact 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.
- exact = true
-
- b, s, r := t.Raw()
- if t.HasString() {
- if t.IsPrivateUse() {
- // We have no entries for user-defined tags.
- return 0, false
- }
- hasExtra := false
- if t.HasVariants() {
- if t.HasExtensions() {
- build := language.Builder{}
- build.SetTag(language.Tag{LangID: b, ScriptID: s, RegionID: r})
- build.AddVariant(t.Variants())
- exact = false
- t = build.Make()
- }
- hasExtra = true
- } else if _, ok := t.Extension('u'); ok {
- // TODO: va may mean something else. Consider not considering it.
- // Strip all but the 'va' entry.
- old := t
- variant := t.TypeForKey("va")
- t = language.Tag{LangID: b, ScriptID: s, RegionID: r}
- if variant != "" {
- t, _ = t.SetTypeForKey("va", variant)
- hasExtra = true
- }
- exact = old == t
- } else {
- exact = false
- }
- if hasExtra {
- // We have some variants.
- for i, s := range specialTags {
- if s == t {
- return ID(i + len(coreTags)), exact
- }
- }
- exact = false
- }
- }
- if x, ok := getCoreIndex(t); ok {
- return x, exact
- }
- exact = false
- if r != 0 && s == 0 {
- // Deal with cases where an extra script is inserted for the region.
- t, _ := t.Maximize()
- if x, ok := getCoreIndex(t); ok {
- return x, exact
- }
- }
- for t = t.Parent(); t != root; t = t.Parent() {
- // 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.
- if x, ok := getCoreIndex(t); ok {
- return x, exact
- }
- }
- return 0, exact
-}
-
-var root = language.Tag{}
diff --git a/vendor/golang.org/x/text/internal/language/compact/parents.go b/vendor/golang.org/x/text/internal/language/compact/parents.go
deleted file mode 100644
index 8d81072..0000000
--- a/vendor/golang.org/x/text/internal/language/compact/parents.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package compact
-
-// parents maps a compact index of a tag to the compact index of the parent of
-// this tag.
-var parents = []ID{ // 775 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0004, 0x0000, 0x0006,
- 0x0000, 0x0008, 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, 0x0000,
- 0x0000, 0x0028, 0x0000, 0x002a, 0x0000, 0x002c, 0x0000, 0x0000,
- 0x002f, 0x002e, 0x002e, 0x0000, 0x0033, 0x0000, 0x0035, 0x0000,
- 0x0037, 0x0000, 0x0039, 0x0000, 0x003b, 0x0000, 0x0000, 0x003e,
- // Entry 40 - 7F
- 0x0000, 0x0040, 0x0040, 0x0000, 0x0043, 0x0043, 0x0000, 0x0046,
- 0x0000, 0x0048, 0x0000, 0x0000, 0x004b, 0x004a, 0x004a, 0x0000,
- 0x004f, 0x004f, 0x004f, 0x004f, 0x0000, 0x0054, 0x0054, 0x0000,
- 0x0057, 0x0000, 0x0059, 0x0000, 0x005b, 0x0000, 0x005d, 0x005d,
- 0x0000, 0x0060, 0x0000, 0x0062, 0x0000, 0x0064, 0x0000, 0x0066,
- 0x0066, 0x0000, 0x0069, 0x0000, 0x006b, 0x006b, 0x006b, 0x006b,
- 0x006b, 0x006b, 0x006b, 0x0000, 0x0073, 0x0000, 0x0075, 0x0000,
- 0x0077, 0x0000, 0x0000, 0x007a, 0x0000, 0x007c, 0x0000, 0x007e,
- // Entry 80 - BF
- 0x0000, 0x0080, 0x0080, 0x0000, 0x0083, 0x0083, 0x0000, 0x0086,
- 0x0087, 0x0087, 0x0087, 0x0086, 0x0088, 0x0087, 0x0087, 0x0087,
- 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088,
- 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087, 0x0088, 0x0087,
- 0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0086,
- // Entry C0 - FF
- 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087,
- 0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0086, 0x0087,
- 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0000,
- 0x00ef, 0x0000, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2,
- 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f1, 0x00f1,
- // Entry 100 - 13F
- 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1,
- 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x0000, 0x010e,
- 0x0000, 0x0110, 0x0000, 0x0112, 0x0000, 0x0114, 0x0114, 0x0000,
- 0x0117, 0x0117, 0x0117, 0x0117, 0x0000, 0x011c, 0x0000, 0x011e,
- 0x0000, 0x0120, 0x0120, 0x0000, 0x0123, 0x0123, 0x0123, 0x0123,
- 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
- 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
- 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
- // Entry 140 - 17F
- 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
- 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
- 0x0123, 0x0123, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156,
- 0x0000, 0x0158, 0x0000, 0x015a, 0x0000, 0x015c, 0x015c, 0x015c,
- 0x0000, 0x0160, 0x0000, 0x0000, 0x0163, 0x0000, 0x0165, 0x0000,
- 0x0167, 0x0167, 0x0167, 0x0000, 0x016b, 0x0000, 0x016d, 0x0000,
- 0x016f, 0x0000, 0x0171, 0x0171, 0x0000, 0x0174, 0x0000, 0x0176,
- 0x0000, 0x0178, 0x0000, 0x017a, 0x0000, 0x017c, 0x0000, 0x017e,
- // Entry 180 - 1BF
- 0x0000, 0x0000, 0x0000, 0x0182, 0x0000, 0x0184, 0x0184, 0x0184,
- 0x0184, 0x0000, 0x0000, 0x0000, 0x018b, 0x0000, 0x0000, 0x018e,
- 0x0000, 0x0000, 0x0191, 0x0000, 0x0000, 0x0000, 0x0195, 0x0000,
- 0x0197, 0x0000, 0x0000, 0x019a, 0x0000, 0x0000, 0x019d, 0x0000,
- 0x019f, 0x0000, 0x01a1, 0x0000, 0x01a3, 0x0000, 0x01a5, 0x0000,
- 0x01a7, 0x0000, 0x01a9, 0x0000, 0x01ab, 0x0000, 0x01ad, 0x0000,
- 0x01af, 0x0000, 0x01b1, 0x01b1, 0x0000, 0x01b4, 0x0000, 0x01b6,
- 0x0000, 0x01b8, 0x0000, 0x01ba, 0x0000, 0x01bc, 0x0000, 0x0000,
- // Entry 1C0 - 1FF
- 0x01bf, 0x0000, 0x01c1, 0x0000, 0x01c3, 0x0000, 0x01c5, 0x0000,
- 0x01c7, 0x0000, 0x01c9, 0x0000, 0x01cb, 0x01cb, 0x01cb, 0x01cb,
- 0x0000, 0x01d0, 0x0000, 0x01d2, 0x01d2, 0x0000, 0x01d5, 0x0000,
- 0x01d7, 0x0000, 0x01d9, 0x0000, 0x01db, 0x0000, 0x01dd, 0x0000,
- 0x01df, 0x01df, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6,
- 0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x0000, 0x01ee,
- 0x0000, 0x01f0, 0x0000, 0x0000, 0x01f3, 0x0000, 0x01f5, 0x01f5,
- 0x01f5, 0x0000, 0x01f9, 0x0000, 0x01fb, 0x0000, 0x01fd, 0x0000,
- // Entry 200 - 23F
- 0x01ff, 0x0000, 0x0000, 0x0202, 0x0000, 0x0204, 0x0204, 0x0000,
- 0x0207, 0x0000, 0x0209, 0x0209, 0x0000, 0x020c, 0x020c, 0x0000,
- 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0000,
- 0x0217, 0x0000, 0x0219, 0x0000, 0x021b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0221, 0x0000, 0x0000, 0x0224, 0x0000, 0x0226,
- 0x0226, 0x0000, 0x0229, 0x0000, 0x022b, 0x022b, 0x0000, 0x0000,
- 0x022f, 0x022e, 0x022e, 0x0000, 0x0000, 0x0234, 0x0000, 0x0236,
- 0x0000, 0x0238, 0x0000, 0x0244, 0x023a, 0x0244, 0x0244, 0x0244,
- // Entry 240 - 27F
- 0x0244, 0x0244, 0x0244, 0x0244, 0x023a, 0x0244, 0x0244, 0x0000,
- 0x0247, 0x0247, 0x0247, 0x0000, 0x024b, 0x0000, 0x024d, 0x0000,
- 0x024f, 0x024f, 0x0000, 0x0252, 0x0000, 0x0254, 0x0254, 0x0254,
- 0x0254, 0x0254, 0x0254, 0x0000, 0x025b, 0x0000, 0x025d, 0x0000,
- 0x025f, 0x0000, 0x0261, 0x0000, 0x0263, 0x0000, 0x0265, 0x0000,
- 0x0000, 0x0268, 0x0268, 0x0268, 0x0000, 0x026c, 0x0000, 0x026e,
- 0x0000, 0x0270, 0x0000, 0x0000, 0x0000, 0x0274, 0x0273, 0x0273,
- 0x0000, 0x0278, 0x0000, 0x027a, 0x0000, 0x027c, 0x0000, 0x0000,
- // Entry 280 - 2BF
- 0x0000, 0x0000, 0x0281, 0x0000, 0x0000, 0x0284, 0x0000, 0x0286,
- 0x0286, 0x0286, 0x0286, 0x0000, 0x028b, 0x028b, 0x028b, 0x0000,
- 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x0000, 0x0295, 0x0295,
- 0x0295, 0x0295, 0x0000, 0x0000, 0x0000, 0x0000, 0x029d, 0x029d,
- 0x029d, 0x0000, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x0000, 0x0000,
- 0x02a7, 0x02a7, 0x02a7, 0x02a7, 0x0000, 0x02ac, 0x0000, 0x02ae,
- 0x02ae, 0x0000, 0x02b1, 0x0000, 0x02b3, 0x0000, 0x02b5, 0x02b5,
- 0x0000, 0x0000, 0x02b9, 0x0000, 0x0000, 0x0000, 0x02bd, 0x0000,
- // Entry 2C0 - 2FF
- 0x02bf, 0x02bf, 0x0000, 0x0000, 0x02c3, 0x0000, 0x02c5, 0x0000,
- 0x02c7, 0x0000, 0x02c9, 0x0000, 0x02cb, 0x0000, 0x02cd, 0x02cd,
- 0x0000, 0x0000, 0x02d1, 0x0000, 0x02d3, 0x02d0, 0x02d0, 0x0000,
- 0x0000, 0x02d8, 0x02d7, 0x02d7, 0x0000, 0x0000, 0x02dd, 0x0000,
- 0x02df, 0x0000, 0x02e1, 0x0000, 0x0000, 0x02e4, 0x0000, 0x02e6,
- 0x0000, 0x0000, 0x02e9, 0x0000, 0x02eb, 0x0000, 0x02ed, 0x0000,
- 0x02ef, 0x02ef, 0x0000, 0x0000, 0x02f3, 0x02f2, 0x02f2, 0x0000,
- 0x02f7, 0x0000, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x0000,
- // Entry 300 - 33F
- 0x02ff, 0x0300, 0x02ff, 0x0000, 0x0303, 0x0051, 0x00e6,
-} // Size: 1574 bytes
-
-// Total table size 1574 bytes (1KiB); checksum: 895AAF0B
diff --git a/vendor/golang.org/x/text/internal/language/compact/tables.go b/vendor/golang.org/x/text/internal/language/compact/tables.go
deleted file mode 100644
index a09ed19..0000000
--- a/vendor/golang.org/x/text/internal/language/compact/tables.go
+++ /dev/null
@@ -1,1015 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package compact
-
-import "golang.org/x/text/internal/language"
-
-// CLDRVersion is the CLDR version from which the tables in this package are derived.
-const CLDRVersion = "32"
-
-// NumCompactTags is the number of common tags. The maximum tag is
-// NumCompactTags-1.
-const NumCompactTags = 775
-const (
- undIndex ID = 0
- afIndex ID = 1
- afNAIndex ID = 2
- afZAIndex ID = 3
- agqIndex ID = 4
- agqCMIndex ID = 5
- akIndex ID = 6
- akGHIndex ID = 7
- amIndex ID = 8
- amETIndex ID = 9
- arIndex ID = 10
- ar001Index ID = 11
- arAEIndex ID = 12
- arBHIndex ID = 13
- arDJIndex ID = 14
- arDZIndex ID = 15
- arEGIndex ID = 16
- arEHIndex ID = 17
- arERIndex ID = 18
- arILIndex ID = 19
- arIQIndex ID = 20
- arJOIndex ID = 21
- arKMIndex ID = 22
- arKWIndex ID = 23
- arLBIndex ID = 24
- arLYIndex ID = 25
- arMAIndex ID = 26
- arMRIndex ID = 27
- arOMIndex ID = 28
- arPSIndex ID = 29
- arQAIndex ID = 30
- arSAIndex ID = 31
- arSDIndex ID = 32
- arSOIndex ID = 33
- arSSIndex ID = 34
- arSYIndex ID = 35
- arTDIndex ID = 36
- arTNIndex ID = 37
- arYEIndex ID = 38
- arsIndex ID = 39
- asIndex ID = 40
- asINIndex ID = 41
- asaIndex ID = 42
- asaTZIndex ID = 43
- astIndex ID = 44
- astESIndex ID = 45
- azIndex ID = 46
- azCyrlIndex ID = 47
- azCyrlAZIndex ID = 48
- azLatnIndex ID = 49
- azLatnAZIndex ID = 50
- basIndex ID = 51
- basCMIndex ID = 52
- beIndex ID = 53
- beBYIndex ID = 54
- bemIndex ID = 55
- bemZMIndex ID = 56
- bezIndex ID = 57
- bezTZIndex ID = 58
- bgIndex ID = 59
- bgBGIndex ID = 60
- bhIndex ID = 61
- bmIndex ID = 62
- bmMLIndex ID = 63
- bnIndex ID = 64
- bnBDIndex ID = 65
- bnINIndex ID = 66
- boIndex ID = 67
- boCNIndex ID = 68
- boINIndex ID = 69
- brIndex ID = 70
- brFRIndex ID = 71
- brxIndex ID = 72
- brxINIndex ID = 73
- bsIndex ID = 74
- bsCyrlIndex ID = 75
- bsCyrlBAIndex ID = 76
- bsLatnIndex ID = 77
- bsLatnBAIndex ID = 78
- caIndex ID = 79
- caADIndex ID = 80
- caESIndex ID = 81
- caFRIndex ID = 82
- caITIndex ID = 83
- ccpIndex ID = 84
- ccpBDIndex ID = 85
- ccpINIndex ID = 86
- ceIndex ID = 87
- ceRUIndex ID = 88
- cggIndex ID = 89
- cggUGIndex ID = 90
- chrIndex ID = 91
- chrUSIndex ID = 92
- ckbIndex ID = 93
- ckbIQIndex ID = 94
- ckbIRIndex ID = 95
- csIndex ID = 96
- csCZIndex ID = 97
- cuIndex ID = 98
- cuRUIndex ID = 99
- cyIndex ID = 100
- cyGBIndex ID = 101
- daIndex ID = 102
- daDKIndex ID = 103
- daGLIndex ID = 104
- davIndex ID = 105
- davKEIndex ID = 106
- deIndex ID = 107
- deATIndex ID = 108
- deBEIndex ID = 109
- deCHIndex ID = 110
- deDEIndex ID = 111
- deITIndex ID = 112
- deLIIndex ID = 113
- deLUIndex ID = 114
- djeIndex ID = 115
- djeNEIndex ID = 116
- dsbIndex ID = 117
- dsbDEIndex ID = 118
- duaIndex ID = 119
- duaCMIndex ID = 120
- dvIndex ID = 121
- dyoIndex ID = 122
- dyoSNIndex ID = 123
- dzIndex ID = 124
- dzBTIndex ID = 125
- ebuIndex ID = 126
- ebuKEIndex ID = 127
- eeIndex ID = 128
- eeGHIndex ID = 129
- eeTGIndex ID = 130
- elIndex ID = 131
- elCYIndex ID = 132
- elGRIndex ID = 133
- enIndex ID = 134
- en001Index ID = 135
- en150Index ID = 136
- enAGIndex ID = 137
- enAIIndex ID = 138
- enASIndex ID = 139
- enATIndex ID = 140
- enAUIndex ID = 141
- enBBIndex ID = 142
- enBEIndex ID = 143
- enBIIndex ID = 144
- enBMIndex ID = 145
- enBSIndex ID = 146
- enBWIndex ID = 147
- enBZIndex ID = 148
- enCAIndex ID = 149
- enCCIndex ID = 150
- enCHIndex ID = 151
- enCKIndex ID = 152
- enCMIndex ID = 153
- enCXIndex ID = 154
- enCYIndex ID = 155
- enDEIndex ID = 156
- enDGIndex ID = 157
- enDKIndex ID = 158
- enDMIndex ID = 159
- enERIndex ID = 160
- enFIIndex ID = 161
- enFJIndex ID = 162
- enFKIndex ID = 163
- enFMIndex ID = 164
- enGBIndex ID = 165
- enGDIndex ID = 166
- enGGIndex ID = 167
- enGHIndex ID = 168
- enGIIndex ID = 169
- enGMIndex ID = 170
- enGUIndex ID = 171
- enGYIndex ID = 172
- enHKIndex ID = 173
- enIEIndex ID = 174
- enILIndex ID = 175
- enIMIndex ID = 176
- enINIndex ID = 177
- enIOIndex ID = 178
- enJEIndex ID = 179
- enJMIndex ID = 180
- enKEIndex ID = 181
- enKIIndex ID = 182
- enKNIndex ID = 183
- enKYIndex ID = 184
- enLCIndex ID = 185
- enLRIndex ID = 186
- enLSIndex ID = 187
- enMGIndex ID = 188
- enMHIndex ID = 189
- enMOIndex ID = 190
- enMPIndex ID = 191
- enMSIndex ID = 192
- enMTIndex ID = 193
- enMUIndex ID = 194
- enMWIndex ID = 195
- enMYIndex ID = 196
- enNAIndex ID = 197
- enNFIndex ID = 198
- enNGIndex ID = 199
- enNLIndex ID = 200
- enNRIndex ID = 201
- enNUIndex ID = 202
- enNZIndex ID = 203
- enPGIndex ID = 204
- enPHIndex ID = 205
- enPKIndex ID = 206
- enPNIndex ID = 207
- enPRIndex ID = 208
- enPWIndex ID = 209
- enRWIndex ID = 210
- enSBIndex ID = 211
- enSCIndex ID = 212
- enSDIndex ID = 213
- enSEIndex ID = 214
- enSGIndex ID = 215
- enSHIndex ID = 216
- enSIIndex ID = 217
- enSLIndex ID = 218
- enSSIndex ID = 219
- enSXIndex ID = 220
- enSZIndex ID = 221
- enTCIndex ID = 222
- enTKIndex ID = 223
- enTOIndex ID = 224
- enTTIndex ID = 225
- enTVIndex ID = 226
- enTZIndex ID = 227
- enUGIndex ID = 228
- enUMIndex ID = 229
- enUSIndex ID = 230
- enVCIndex ID = 231
- enVGIndex ID = 232
- enVIIndex ID = 233
- enVUIndex ID = 234
- enWSIndex ID = 235
- enZAIndex ID = 236
- enZMIndex ID = 237
- enZWIndex ID = 238
- eoIndex ID = 239
- eo001Index ID = 240
- esIndex ID = 241
- es419Index ID = 242
- esARIndex ID = 243
- esBOIndex ID = 244
- esBRIndex ID = 245
- esBZIndex ID = 246
- esCLIndex ID = 247
- esCOIndex ID = 248
- esCRIndex ID = 249
- esCUIndex ID = 250
- esDOIndex ID = 251
- esEAIndex ID = 252
- esECIndex ID = 253
- esESIndex ID = 254
- esGQIndex ID = 255
- esGTIndex ID = 256
- esHNIndex ID = 257
- esICIndex ID = 258
- esMXIndex ID = 259
- esNIIndex ID = 260
- esPAIndex ID = 261
- esPEIndex ID = 262
- esPHIndex ID = 263
- esPRIndex ID = 264
- esPYIndex ID = 265
- esSVIndex ID = 266
- esUSIndex ID = 267
- esUYIndex ID = 268
- esVEIndex ID = 269
- etIndex ID = 270
- etEEIndex ID = 271
- euIndex ID = 272
- euESIndex ID = 273
- ewoIndex ID = 274
- ewoCMIndex ID = 275
- faIndex ID = 276
- faAFIndex ID = 277
- faIRIndex ID = 278
- ffIndex ID = 279
- ffCMIndex ID = 280
- ffGNIndex ID = 281
- ffMRIndex ID = 282
- ffSNIndex ID = 283
- fiIndex ID = 284
- fiFIIndex ID = 285
- filIndex ID = 286
- filPHIndex ID = 287
- foIndex ID = 288
- foDKIndex ID = 289
- foFOIndex ID = 290
- frIndex ID = 291
- frBEIndex ID = 292
- frBFIndex ID = 293
- frBIIndex ID = 294
- frBJIndex ID = 295
- frBLIndex ID = 296
- frCAIndex ID = 297
- frCDIndex ID = 298
- frCFIndex ID = 299
- frCGIndex ID = 300
- frCHIndex ID = 301
- frCIIndex ID = 302
- frCMIndex ID = 303
- frDJIndex ID = 304
- frDZIndex ID = 305
- frFRIndex ID = 306
- frGAIndex ID = 307
- frGFIndex ID = 308
- frGNIndex ID = 309
- frGPIndex ID = 310
- frGQIndex ID = 311
- frHTIndex ID = 312
- frKMIndex ID = 313
- frLUIndex ID = 314
- frMAIndex ID = 315
- frMCIndex ID = 316
- frMFIndex ID = 317
- frMGIndex ID = 318
- frMLIndex ID = 319
- frMQIndex ID = 320
- frMRIndex ID = 321
- frMUIndex ID = 322
- frNCIndex ID = 323
- frNEIndex ID = 324
- frPFIndex ID = 325
- frPMIndex ID = 326
- frREIndex ID = 327
- frRWIndex ID = 328
- frSCIndex ID = 329
- frSNIndex ID = 330
- frSYIndex ID = 331
- frTDIndex ID = 332
- frTGIndex ID = 333
- frTNIndex ID = 334
- frVUIndex ID = 335
- frWFIndex ID = 336
- frYTIndex ID = 337
- furIndex ID = 338
- furITIndex ID = 339
- fyIndex ID = 340
- fyNLIndex ID = 341
- gaIndex ID = 342
- gaIEIndex ID = 343
- gdIndex ID = 344
- gdGBIndex ID = 345
- glIndex ID = 346
- glESIndex ID = 347
- gswIndex ID = 348
- gswCHIndex ID = 349
- gswFRIndex ID = 350
- gswLIIndex ID = 351
- guIndex ID = 352
- guINIndex ID = 353
- guwIndex ID = 354
- guzIndex ID = 355
- guzKEIndex ID = 356
- gvIndex ID = 357
- gvIMIndex ID = 358
- haIndex ID = 359
- haGHIndex ID = 360
- haNEIndex ID = 361
- haNGIndex ID = 362
- hawIndex ID = 363
- hawUSIndex ID = 364
- heIndex ID = 365
- heILIndex ID = 366
- hiIndex ID = 367
- hiINIndex ID = 368
- hrIndex ID = 369
- hrBAIndex ID = 370
- hrHRIndex ID = 371
- hsbIndex ID = 372
- hsbDEIndex ID = 373
- huIndex ID = 374
- huHUIndex ID = 375
- hyIndex ID = 376
- hyAMIndex ID = 377
- idIndex ID = 378
- idIDIndex ID = 379
- igIndex ID = 380
- igNGIndex ID = 381
- iiIndex ID = 382
- iiCNIndex ID = 383
- inIndex ID = 384
- ioIndex ID = 385
- isIndex ID = 386
- isISIndex ID = 387
- itIndex ID = 388
- itCHIndex ID = 389
- itITIndex ID = 390
- itSMIndex ID = 391
- itVAIndex ID = 392
- iuIndex ID = 393
- iwIndex ID = 394
- jaIndex ID = 395
- jaJPIndex ID = 396
- jboIndex ID = 397
- jgoIndex ID = 398
- jgoCMIndex ID = 399
- jiIndex ID = 400
- jmcIndex ID = 401
- jmcTZIndex ID = 402
- jvIndex ID = 403
- jwIndex ID = 404
- kaIndex ID = 405
- kaGEIndex ID = 406
- kabIndex ID = 407
- kabDZIndex ID = 408
- kajIndex ID = 409
- kamIndex ID = 410
- kamKEIndex ID = 411
- kcgIndex ID = 412
- kdeIndex ID = 413
- kdeTZIndex ID = 414
- keaIndex ID = 415
- keaCVIndex ID = 416
- khqIndex ID = 417
- khqMLIndex ID = 418
- kiIndex ID = 419
- kiKEIndex ID = 420
- kkIndex ID = 421
- kkKZIndex ID = 422
- kkjIndex ID = 423
- kkjCMIndex ID = 424
- klIndex ID = 425
- klGLIndex ID = 426
- klnIndex ID = 427
- klnKEIndex ID = 428
- kmIndex ID = 429
- kmKHIndex ID = 430
- knIndex ID = 431
- knINIndex ID = 432
- koIndex ID = 433
- koKPIndex ID = 434
- koKRIndex ID = 435
- kokIndex ID = 436
- kokINIndex ID = 437
- ksIndex ID = 438
- ksINIndex ID = 439
- ksbIndex ID = 440
- ksbTZIndex ID = 441
- ksfIndex ID = 442
- ksfCMIndex ID = 443
- kshIndex ID = 444
- kshDEIndex ID = 445
- kuIndex ID = 446
- kwIndex ID = 447
- kwGBIndex ID = 448
- kyIndex ID = 449
- kyKGIndex ID = 450
- lagIndex ID = 451
- lagTZIndex ID = 452
- lbIndex ID = 453
- lbLUIndex ID = 454
- lgIndex ID = 455
- lgUGIndex ID = 456
- lktIndex ID = 457
- lktUSIndex ID = 458
- lnIndex ID = 459
- lnAOIndex ID = 460
- lnCDIndex ID = 461
- lnCFIndex ID = 462
- lnCGIndex ID = 463
- loIndex ID = 464
- loLAIndex ID = 465
- lrcIndex ID = 466
- lrcIQIndex ID = 467
- lrcIRIndex ID = 468
- ltIndex ID = 469
- ltLTIndex ID = 470
- luIndex ID = 471
- luCDIndex ID = 472
- luoIndex ID = 473
- luoKEIndex ID = 474
- luyIndex ID = 475
- luyKEIndex ID = 476
- lvIndex ID = 477
- lvLVIndex ID = 478
- masIndex ID = 479
- masKEIndex ID = 480
- masTZIndex ID = 481
- merIndex ID = 482
- merKEIndex ID = 483
- mfeIndex ID = 484
- mfeMUIndex ID = 485
- mgIndex ID = 486
- mgMGIndex ID = 487
- mghIndex ID = 488
- mghMZIndex ID = 489
- mgoIndex ID = 490
- mgoCMIndex ID = 491
- mkIndex ID = 492
- mkMKIndex ID = 493
- mlIndex ID = 494
- mlINIndex ID = 495
- mnIndex ID = 496
- mnMNIndex ID = 497
- moIndex ID = 498
- mrIndex ID = 499
- mrINIndex ID = 500
- msIndex ID = 501
- msBNIndex ID = 502
- msMYIndex ID = 503
- msSGIndex ID = 504
- mtIndex ID = 505
- mtMTIndex ID = 506
- muaIndex ID = 507
- muaCMIndex ID = 508
- myIndex ID = 509
- myMMIndex ID = 510
- mznIndex ID = 511
- mznIRIndex ID = 512
- nahIndex ID = 513
- naqIndex ID = 514
- naqNAIndex ID = 515
- nbIndex ID = 516
- nbNOIndex ID = 517
- nbSJIndex ID = 518
- ndIndex ID = 519
- ndZWIndex ID = 520
- ndsIndex ID = 521
- ndsDEIndex ID = 522
- ndsNLIndex ID = 523
- neIndex ID = 524
- neINIndex ID = 525
- neNPIndex ID = 526
- nlIndex ID = 527
- nlAWIndex ID = 528
- nlBEIndex ID = 529
- nlBQIndex ID = 530
- nlCWIndex ID = 531
- nlNLIndex ID = 532
- nlSRIndex ID = 533
- nlSXIndex ID = 534
- nmgIndex ID = 535
- nmgCMIndex ID = 536
- nnIndex ID = 537
- nnNOIndex ID = 538
- nnhIndex ID = 539
- nnhCMIndex ID = 540
- noIndex ID = 541
- nqoIndex ID = 542
- nrIndex ID = 543
- nsoIndex ID = 544
- nusIndex ID = 545
- nusSSIndex ID = 546
- nyIndex ID = 547
- nynIndex ID = 548
- nynUGIndex ID = 549
- omIndex ID = 550
- omETIndex ID = 551
- omKEIndex ID = 552
- orIndex ID = 553
- orINIndex ID = 554
- osIndex ID = 555
- osGEIndex ID = 556
- osRUIndex ID = 557
- paIndex ID = 558
- paArabIndex ID = 559
- paArabPKIndex ID = 560
- paGuruIndex ID = 561
- paGuruINIndex ID = 562
- papIndex ID = 563
- plIndex ID = 564
- plPLIndex ID = 565
- prgIndex ID = 566
- prg001Index ID = 567
- psIndex ID = 568
- psAFIndex ID = 569
- ptIndex ID = 570
- ptAOIndex ID = 571
- ptBRIndex ID = 572
- ptCHIndex ID = 573
- ptCVIndex ID = 574
- ptGQIndex ID = 575
- ptGWIndex ID = 576
- ptLUIndex ID = 577
- ptMOIndex ID = 578
- ptMZIndex ID = 579
- ptPTIndex ID = 580
- ptSTIndex ID = 581
- ptTLIndex ID = 582
- quIndex ID = 583
- quBOIndex ID = 584
- quECIndex ID = 585
- quPEIndex ID = 586
- rmIndex ID = 587
- rmCHIndex ID = 588
- rnIndex ID = 589
- rnBIIndex ID = 590
- roIndex ID = 591
- roMDIndex ID = 592
- roROIndex ID = 593
- rofIndex ID = 594
- rofTZIndex ID = 595
- ruIndex ID = 596
- ruBYIndex ID = 597
- ruKGIndex ID = 598
- ruKZIndex ID = 599
- ruMDIndex ID = 600
- ruRUIndex ID = 601
- ruUAIndex ID = 602
- rwIndex ID = 603
- rwRWIndex ID = 604
- rwkIndex ID = 605
- rwkTZIndex ID = 606
- sahIndex ID = 607
- sahRUIndex ID = 608
- saqIndex ID = 609
- saqKEIndex ID = 610
- sbpIndex ID = 611
- sbpTZIndex ID = 612
- sdIndex ID = 613
- sdPKIndex ID = 614
- sdhIndex ID = 615
- seIndex ID = 616
- seFIIndex ID = 617
- seNOIndex ID = 618
- seSEIndex ID = 619
- sehIndex ID = 620
- sehMZIndex ID = 621
- sesIndex ID = 622
- sesMLIndex ID = 623
- sgIndex ID = 624
- sgCFIndex ID = 625
- shIndex ID = 626
- shiIndex ID = 627
- shiLatnIndex ID = 628
- shiLatnMAIndex ID = 629
- shiTfngIndex ID = 630
- shiTfngMAIndex ID = 631
- siIndex ID = 632
- siLKIndex ID = 633
- skIndex ID = 634
- skSKIndex ID = 635
- slIndex ID = 636
- slSIIndex ID = 637
- smaIndex ID = 638
- smiIndex ID = 639
- smjIndex ID = 640
- smnIndex ID = 641
- smnFIIndex ID = 642
- smsIndex ID = 643
- snIndex ID = 644
- snZWIndex ID = 645
- soIndex ID = 646
- soDJIndex ID = 647
- soETIndex ID = 648
- soKEIndex ID = 649
- soSOIndex ID = 650
- sqIndex ID = 651
- sqALIndex ID = 652
- sqMKIndex ID = 653
- sqXKIndex ID = 654
- srIndex ID = 655
- srCyrlIndex ID = 656
- srCyrlBAIndex ID = 657
- srCyrlMEIndex ID = 658
- srCyrlRSIndex ID = 659
- srCyrlXKIndex ID = 660
- srLatnIndex ID = 661
- srLatnBAIndex ID = 662
- srLatnMEIndex ID = 663
- srLatnRSIndex ID = 664
- srLatnXKIndex ID = 665
- ssIndex ID = 666
- ssyIndex ID = 667
- stIndex ID = 668
- svIndex ID = 669
- svAXIndex ID = 670
- svFIIndex ID = 671
- svSEIndex ID = 672
- swIndex ID = 673
- swCDIndex ID = 674
- swKEIndex ID = 675
- swTZIndex ID = 676
- swUGIndex ID = 677
- syrIndex ID = 678
- taIndex ID = 679
- taINIndex ID = 680
- taLKIndex ID = 681
- taMYIndex ID = 682
- taSGIndex ID = 683
- teIndex ID = 684
- teINIndex ID = 685
- teoIndex ID = 686
- teoKEIndex ID = 687
- teoUGIndex ID = 688
- tgIndex ID = 689
- tgTJIndex ID = 690
- thIndex ID = 691
- thTHIndex ID = 692
- tiIndex ID = 693
- tiERIndex ID = 694
- tiETIndex ID = 695
- tigIndex ID = 696
- tkIndex ID = 697
- tkTMIndex ID = 698
- tlIndex ID = 699
- tnIndex ID = 700
- toIndex ID = 701
- toTOIndex ID = 702
- trIndex ID = 703
- trCYIndex ID = 704
- trTRIndex ID = 705
- tsIndex ID = 706
- ttIndex ID = 707
- ttRUIndex ID = 708
- twqIndex ID = 709
- twqNEIndex ID = 710
- tzmIndex ID = 711
- tzmMAIndex ID = 712
- ugIndex ID = 713
- ugCNIndex ID = 714
- ukIndex ID = 715
- ukUAIndex ID = 716
- urIndex ID = 717
- urINIndex ID = 718
- urPKIndex ID = 719
- uzIndex ID = 720
- uzArabIndex ID = 721
- uzArabAFIndex ID = 722
- uzCyrlIndex ID = 723
- uzCyrlUZIndex ID = 724
- uzLatnIndex ID = 725
- uzLatnUZIndex ID = 726
- vaiIndex ID = 727
- vaiLatnIndex ID = 728
- vaiLatnLRIndex ID = 729
- vaiVaiiIndex ID = 730
- vaiVaiiLRIndex ID = 731
- veIndex ID = 732
- viIndex ID = 733
- viVNIndex ID = 734
- voIndex ID = 735
- vo001Index ID = 736
- vunIndex ID = 737
- vunTZIndex ID = 738
- waIndex ID = 739
- waeIndex ID = 740
- waeCHIndex ID = 741
- woIndex ID = 742
- woSNIndex ID = 743
- xhIndex ID = 744
- xogIndex ID = 745
- xogUGIndex ID = 746
- yavIndex ID = 747
- yavCMIndex ID = 748
- yiIndex ID = 749
- yi001Index ID = 750
- yoIndex ID = 751
- yoBJIndex ID = 752
- yoNGIndex ID = 753
- yueIndex ID = 754
- yueHansIndex ID = 755
- yueHansCNIndex ID = 756
- yueHantIndex ID = 757
- yueHantHKIndex ID = 758
- zghIndex ID = 759
- zghMAIndex ID = 760
- zhIndex ID = 761
- zhHansIndex ID = 762
- zhHansCNIndex ID = 763
- zhHansHKIndex ID = 764
- zhHansMOIndex ID = 765
- zhHansSGIndex ID = 766
- zhHantIndex ID = 767
- zhHantHKIndex ID = 768
- zhHantMOIndex ID = 769
- zhHantTWIndex ID = 770
- zuIndex ID = 771
- zuZAIndex ID = 772
- caESvalenciaIndex ID = 773
- enUSuvaposixIndex ID = 774
-)
-
-var coreTags = []language.CompactCoreInfo{ // 773 elements
- // Entry 0 - 1F
- 0x00000000, 0x01600000, 0x016000d3, 0x01600162,
- 0x01c00000, 0x01c00052, 0x02100000, 0x02100081,
- 0x02700000, 0x02700070, 0x03a00000, 0x03a00001,
- 0x03a00023, 0x03a00039, 0x03a00063, 0x03a00068,
- 0x03a0006c, 0x03a0006d, 0x03a0006e, 0x03a00098,
- 0x03a0009c, 0x03a000a2, 0x03a000a9, 0x03a000ad,
- 0x03a000b1, 0x03a000ba, 0x03a000bb, 0x03a000ca,
- 0x03a000e2, 0x03a000ee, 0x03a000f4, 0x03a00109,
- // Entry 20 - 3F
- 0x03a0010c, 0x03a00116, 0x03a00118, 0x03a0011d,
- 0x03a00121, 0x03a00129, 0x03a0015f, 0x04000000,
- 0x04300000, 0x0430009a, 0x04400000, 0x04400130,
- 0x04800000, 0x0480006f, 0x05800000, 0x05820000,
- 0x05820032, 0x0585b000, 0x0585b032, 0x05e00000,
- 0x05e00052, 0x07100000, 0x07100047, 0x07500000,
- 0x07500163, 0x07900000, 0x07900130, 0x07e00000,
- 0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c4,
- // Entry 40 - 5F
- 0x0a500000, 0x0a500035, 0x0a50009a, 0x0a900000,
- 0x0a900053, 0x0a90009a, 0x0b200000, 0x0b200079,
- 0x0b500000, 0x0b50009a, 0x0b700000, 0x0b720000,
- 0x0b720033, 0x0b75b000, 0x0b75b033, 0x0d700000,
- 0x0d700022, 0x0d70006f, 0x0d700079, 0x0d70009f,
- 0x0db00000, 0x0db00035, 0x0db0009a, 0x0dc00000,
- 0x0dc00107, 0x0df00000, 0x0df00132, 0x0e500000,
- 0x0e500136, 0x0e900000, 0x0e90009c, 0x0e90009d,
- // Entry 60 - 7F
- 0x0fa00000, 0x0fa0005f, 0x0fe00000, 0x0fe00107,
- 0x10000000, 0x1000007c, 0x10100000, 0x10100064,
- 0x10100083, 0x10800000, 0x108000a5, 0x10d00000,
- 0x10d0002e, 0x10d00036, 0x10d0004e, 0x10d00061,
- 0x10d0009f, 0x10d000b3, 0x10d000b8, 0x11700000,
- 0x117000d5, 0x11f00000, 0x11f00061, 0x12400000,
- 0x12400052, 0x12800000, 0x12b00000, 0x12b00115,
- 0x12d00000, 0x12d00043, 0x12f00000, 0x12f000a5,
- // Entry 80 - 9F
- 0x13000000, 0x13000081, 0x13000123, 0x13600000,
- 0x1360005e, 0x13600088, 0x13900000, 0x13900001,
- 0x1390001a, 0x13900025, 0x13900026, 0x1390002d,
- 0x1390002e, 0x1390002f, 0x13900034, 0x13900036,
- 0x1390003a, 0x1390003d, 0x13900042, 0x13900046,
- 0x13900048, 0x13900049, 0x1390004a, 0x1390004e,
- 0x13900050, 0x13900052, 0x1390005d, 0x1390005e,
- 0x13900061, 0x13900062, 0x13900064, 0x13900065,
- // Entry A0 - BF
- 0x1390006e, 0x13900073, 0x13900074, 0x13900075,
- 0x13900076, 0x1390007c, 0x1390007d, 0x13900080,
- 0x13900081, 0x13900082, 0x13900084, 0x1390008b,
- 0x1390008d, 0x1390008e, 0x13900097, 0x13900098,
- 0x13900099, 0x1390009a, 0x1390009b, 0x139000a0,
- 0x139000a1, 0x139000a5, 0x139000a8, 0x139000aa,
- 0x139000ae, 0x139000b2, 0x139000b5, 0x139000b6,
- 0x139000c0, 0x139000c1, 0x139000c7, 0x139000c8,
- // Entry C0 - DF
- 0x139000cb, 0x139000cc, 0x139000cd, 0x139000cf,
- 0x139000d1, 0x139000d3, 0x139000d6, 0x139000d7,
- 0x139000da, 0x139000de, 0x139000e0, 0x139000e1,
- 0x139000e7, 0x139000e8, 0x139000e9, 0x139000ec,
- 0x139000ed, 0x139000f1, 0x13900108, 0x1390010a,
- 0x1390010b, 0x1390010c, 0x1390010d, 0x1390010e,
- 0x1390010f, 0x13900110, 0x13900113, 0x13900118,
- 0x1390011c, 0x1390011e, 0x13900120, 0x13900126,
- // Entry E0 - FF
- 0x1390012a, 0x1390012d, 0x1390012e, 0x13900130,
- 0x13900132, 0x13900134, 0x13900136, 0x1390013a,
- 0x1390013d, 0x1390013e, 0x13900140, 0x13900143,
- 0x13900162, 0x13900163, 0x13900165, 0x13c00000,
- 0x13c00001, 0x13e00000, 0x13e0001f, 0x13e0002c,
- 0x13e0003f, 0x13e00041, 0x13e00048, 0x13e00051,
- 0x13e00054, 0x13e00057, 0x13e0005a, 0x13e00066,
- 0x13e00069, 0x13e0006a, 0x13e0006f, 0x13e00087,
- // Entry 100 - 11F
- 0x13e0008a, 0x13e00090, 0x13e00095, 0x13e000d0,
- 0x13e000d9, 0x13e000e3, 0x13e000e5, 0x13e000e8,
- 0x13e000ed, 0x13e000f2, 0x13e0011b, 0x13e00136,
- 0x13e00137, 0x13e0013c, 0x14000000, 0x1400006b,
- 0x14500000, 0x1450006f, 0x14600000, 0x14600052,
- 0x14800000, 0x14800024, 0x1480009d, 0x14e00000,
- 0x14e00052, 0x14e00085, 0x14e000ca, 0x14e00115,
- 0x15100000, 0x15100073, 0x15300000, 0x153000e8,
- // Entry 120 - 13F
- 0x15800000, 0x15800064, 0x15800077, 0x15e00000,
- 0x15e00036, 0x15e00037, 0x15e0003a, 0x15e0003b,
- 0x15e0003c, 0x15e00049, 0x15e0004b, 0x15e0004c,
- 0x15e0004d, 0x15e0004e, 0x15e0004f, 0x15e00052,
- 0x15e00063, 0x15e00068, 0x15e00079, 0x15e0007b,
- 0x15e0007f, 0x15e00085, 0x15e00086, 0x15e00087,
- 0x15e00092, 0x15e000a9, 0x15e000b8, 0x15e000bb,
- 0x15e000bc, 0x15e000bf, 0x15e000c0, 0x15e000c4,
- // Entry 140 - 15F
- 0x15e000c9, 0x15e000ca, 0x15e000cd, 0x15e000d4,
- 0x15e000d5, 0x15e000e6, 0x15e000eb, 0x15e00103,
- 0x15e00108, 0x15e0010b, 0x15e00115, 0x15e0011d,
- 0x15e00121, 0x15e00123, 0x15e00129, 0x15e00140,
- 0x15e00141, 0x15e00160, 0x16900000, 0x1690009f,
- 0x16d00000, 0x16d000da, 0x16e00000, 0x16e00097,
- 0x17e00000, 0x17e0007c, 0x19000000, 0x1900006f,
- 0x1a300000, 0x1a30004e, 0x1a300079, 0x1a3000b3,
- // Entry 160 - 17F
- 0x1a400000, 0x1a40009a, 0x1a900000, 0x1ab00000,
- 0x1ab000a5, 0x1ac00000, 0x1ac00099, 0x1b400000,
- 0x1b400081, 0x1b4000d5, 0x1b4000d7, 0x1b800000,
- 0x1b800136, 0x1bc00000, 0x1bc00098, 0x1be00000,
- 0x1be0009a, 0x1d100000, 0x1d100033, 0x1d100091,
- 0x1d200000, 0x1d200061, 0x1d500000, 0x1d500093,
- 0x1d700000, 0x1d700028, 0x1e100000, 0x1e100096,
- 0x1e700000, 0x1e7000d7, 0x1ea00000, 0x1ea00053,
- // Entry 180 - 19F
- 0x1f300000, 0x1f500000, 0x1f800000, 0x1f80009e,
- 0x1f900000, 0x1f90004e, 0x1f90009f, 0x1f900114,
- 0x1f900139, 0x1fa00000, 0x1fb00000, 0x20000000,
- 0x200000a3, 0x20300000, 0x20700000, 0x20700052,
- 0x20800000, 0x20a00000, 0x20a00130, 0x20e00000,
- 0x20f00000, 0x21000000, 0x2100007e, 0x21200000,
- 0x21200068, 0x21600000, 0x21700000, 0x217000a5,
- 0x21f00000, 0x22300000, 0x22300130, 0x22700000,
- // Entry 1A0 - 1BF
- 0x2270005b, 0x23400000, 0x234000c4, 0x23900000,
- 0x239000a5, 0x24200000, 0x242000af, 0x24400000,
- 0x24400052, 0x24500000, 0x24500083, 0x24600000,
- 0x246000a5, 0x24a00000, 0x24a000a7, 0x25100000,
- 0x2510009a, 0x25400000, 0x254000ab, 0x254000ac,
- 0x25600000, 0x2560009a, 0x26a00000, 0x26a0009a,
- 0x26b00000, 0x26b00130, 0x26d00000, 0x26d00052,
- 0x26e00000, 0x26e00061, 0x27400000, 0x28100000,
- // Entry 1C0 - 1DF
- 0x2810007c, 0x28a00000, 0x28a000a6, 0x29100000,
- 0x29100130, 0x29500000, 0x295000b8, 0x2a300000,
- 0x2a300132, 0x2af00000, 0x2af00136, 0x2b500000,
- 0x2b50002a, 0x2b50004b, 0x2b50004c, 0x2b50004d,
- 0x2b800000, 0x2b8000b0, 0x2bf00000, 0x2bf0009c,
- 0x2bf0009d, 0x2c000000, 0x2c0000b7, 0x2c200000,
- 0x2c20004b, 0x2c400000, 0x2c4000a5, 0x2c500000,
- 0x2c5000a5, 0x2c700000, 0x2c7000b9, 0x2d100000,
- // Entry 1E0 - 1FF
- 0x2d1000a5, 0x2d100130, 0x2e900000, 0x2e9000a5,
- 0x2ed00000, 0x2ed000cd, 0x2f100000, 0x2f1000c0,
- 0x2f200000, 0x2f2000d2, 0x2f400000, 0x2f400052,
- 0x2ff00000, 0x2ff000c3, 0x30400000, 0x3040009a,
- 0x30b00000, 0x30b000c6, 0x31000000, 0x31b00000,
- 0x31b0009a, 0x31f00000, 0x31f0003e, 0x31f000d1,
- 0x31f0010e, 0x32000000, 0x320000cc, 0x32500000,
- 0x32500052, 0x33100000, 0x331000c5, 0x33a00000,
- // Entry 200 - 21F
- 0x33a0009d, 0x34100000, 0x34500000, 0x345000d3,
- 0x34700000, 0x347000db, 0x34700111, 0x34e00000,
- 0x34e00165, 0x35000000, 0x35000061, 0x350000da,
- 0x35100000, 0x3510009a, 0x351000dc, 0x36700000,
- 0x36700030, 0x36700036, 0x36700040, 0x3670005c,
- 0x367000da, 0x36700117, 0x3670011c, 0x36800000,
- 0x36800052, 0x36a00000, 0x36a000db, 0x36c00000,
- 0x36c00052, 0x36f00000, 0x37500000, 0x37600000,
- // Entry 220 - 23F
- 0x37a00000, 0x38000000, 0x38000118, 0x38700000,
- 0x38900000, 0x38900132, 0x39000000, 0x39000070,
- 0x390000a5, 0x39500000, 0x3950009a, 0x39800000,
- 0x3980007e, 0x39800107, 0x39d00000, 0x39d05000,
- 0x39d050e9, 0x39d36000, 0x39d3609a, 0x3a100000,
- 0x3b300000, 0x3b3000ea, 0x3bd00000, 0x3bd00001,
- 0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a,
- 0x3c000041, 0x3c00004e, 0x3c00005b, 0x3c000087,
- // Entry 240 - 25F
- 0x3c00008c, 0x3c0000b8, 0x3c0000c7, 0x3c0000d2,
- 0x3c0000ef, 0x3c000119, 0x3c000127, 0x3c400000,
- 0x3c40003f, 0x3c40006a, 0x3c4000e5, 0x3d400000,
- 0x3d40004e, 0x3d900000, 0x3d90003a, 0x3dc00000,
- 0x3dc000bd, 0x3dc00105, 0x3de00000, 0x3de00130,
- 0x3e200000, 0x3e200047, 0x3e2000a6, 0x3e2000af,
- 0x3e2000bd, 0x3e200107, 0x3e200131, 0x3e500000,
- 0x3e500108, 0x3e600000, 0x3e600130, 0x3eb00000,
- // Entry 260 - 27F
- 0x3eb00107, 0x3ec00000, 0x3ec000a5, 0x3f300000,
- 0x3f300130, 0x3fa00000, 0x3fa000e9, 0x3fc00000,
- 0x3fd00000, 0x3fd00073, 0x3fd000db, 0x3fd0010d,
- 0x3ff00000, 0x3ff000d2, 0x40100000, 0x401000c4,
- 0x40200000, 0x4020004c, 0x40700000, 0x40800000,
- 0x4085b000, 0x4085b0bb, 0x408eb000, 0x408eb0bb,
- 0x40c00000, 0x40c000b4, 0x41200000, 0x41200112,
- 0x41600000, 0x41600110, 0x41c00000, 0x41d00000,
- // Entry 280 - 29F
- 0x41e00000, 0x41f00000, 0x41f00073, 0x42200000,
- 0x42300000, 0x42300165, 0x42900000, 0x42900063,
- 0x42900070, 0x429000a5, 0x42900116, 0x43100000,
- 0x43100027, 0x431000c3, 0x4310014e, 0x43200000,
- 0x43220000, 0x43220033, 0x432200be, 0x43220106,
- 0x4322014e, 0x4325b000, 0x4325b033, 0x4325b0be,
- 0x4325b106, 0x4325b14e, 0x43700000, 0x43a00000,
- 0x43b00000, 0x44400000, 0x44400031, 0x44400073,
- // Entry 2A0 - 2BF
- 0x4440010d, 0x44500000, 0x4450004b, 0x445000a5,
- 0x44500130, 0x44500132, 0x44e00000, 0x45000000,
- 0x4500009a, 0x450000b4, 0x450000d1, 0x4500010e,
- 0x46100000, 0x4610009a, 0x46400000, 0x464000a5,
- 0x46400132, 0x46700000, 0x46700125, 0x46b00000,
- 0x46b00124, 0x46f00000, 0x46f0006e, 0x46f00070,
- 0x47100000, 0x47600000, 0x47600128, 0x47a00000,
- 0x48000000, 0x48200000, 0x4820012a, 0x48a00000,
- // Entry 2C0 - 2DF
- 0x48a0005e, 0x48a0012c, 0x48e00000, 0x49400000,
- 0x49400107, 0x4a400000, 0x4a4000d5, 0x4a900000,
- 0x4a9000bb, 0x4ac00000, 0x4ac00053, 0x4ae00000,
- 0x4ae00131, 0x4b400000, 0x4b40009a, 0x4b4000e9,
- 0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000,
- 0x4bc20138, 0x4bc5b000, 0x4bc5b138, 0x4be00000,
- 0x4be5b000, 0x4be5b0b5, 0x4bef4000, 0x4bef40b5,
- 0x4c000000, 0x4c300000, 0x4c30013f, 0x4c900000,
- // Entry 2E0 - 2FF
- 0x4c900001, 0x4cc00000, 0x4cc00130, 0x4ce00000,
- 0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500115,
- 0x4f200000, 0x4fb00000, 0x4fb00132, 0x50900000,
- 0x50900052, 0x51200000, 0x51200001, 0x51800000,
- 0x5180003b, 0x518000d7, 0x51f00000, 0x51f3b000,
- 0x51f3b053, 0x51f3c000, 0x51f3c08e, 0x52800000,
- 0x528000bb, 0x52900000, 0x5293b000, 0x5293b053,
- 0x5293b08e, 0x5293b0c7, 0x5293b10e, 0x5293c000,
- // Entry 300 - 31F
- 0x5293c08e, 0x5293c0c7, 0x5293c12f, 0x52f00000,
- 0x52f00162,
-} // Size: 3116 bytes
-
-const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix"
-
-// Total table size 3147 bytes (3KiB); checksum: 5A8FFFA5
diff --git a/vendor/golang.org/x/text/internal/language/compact/tags.go b/vendor/golang.org/x/text/internal/language/compact/tags.go
deleted file mode 100644
index ca135d2..0000000
--- a/vendor/golang.org/x/text/internal/language/compact/tags.go
+++ /dev/null
@@ -1,91 +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 compact
-
-var (
- und = Tag{}
-
- Und Tag = Tag{}
-
- Afrikaans Tag = Tag{language: afIndex, locale: afIndex}
- Amharic Tag = Tag{language: amIndex, locale: amIndex}
- Arabic Tag = Tag{language: arIndex, locale: arIndex}
- ModernStandardArabic Tag = Tag{language: ar001Index, locale: ar001Index}
- Azerbaijani Tag = Tag{language: azIndex, locale: azIndex}
- Bulgarian Tag = Tag{language: bgIndex, locale: bgIndex}
- Bengali Tag = Tag{language: bnIndex, locale: bnIndex}
- Catalan Tag = Tag{language: caIndex, locale: caIndex}
- Czech Tag = Tag{language: csIndex, locale: csIndex}
- Danish Tag = Tag{language: daIndex, locale: daIndex}
- German Tag = Tag{language: deIndex, locale: deIndex}
- Greek Tag = Tag{language: elIndex, locale: elIndex}
- English Tag = Tag{language: enIndex, locale: enIndex}
- AmericanEnglish Tag = Tag{language: enUSIndex, locale: enUSIndex}
- BritishEnglish Tag = Tag{language: enGBIndex, locale: enGBIndex}
- Spanish Tag = Tag{language: esIndex, locale: esIndex}
- EuropeanSpanish Tag = Tag{language: esESIndex, locale: esESIndex}
- LatinAmericanSpanish Tag = Tag{language: es419Index, locale: es419Index}
- Estonian Tag = Tag{language: etIndex, locale: etIndex}
- Persian Tag = Tag{language: faIndex, locale: faIndex}
- Finnish Tag = Tag{language: fiIndex, locale: fiIndex}
- Filipino Tag = Tag{language: filIndex, locale: filIndex}
- French Tag = Tag{language: frIndex, locale: frIndex}
- CanadianFrench Tag = Tag{language: frCAIndex, locale: frCAIndex}
- Gujarati Tag = Tag{language: guIndex, locale: guIndex}
- Hebrew Tag = Tag{language: heIndex, locale: heIndex}
- Hindi Tag = Tag{language: hiIndex, locale: hiIndex}
- Croatian Tag = Tag{language: hrIndex, locale: hrIndex}
- Hungarian Tag = Tag{language: huIndex, locale: huIndex}
- Armenian Tag = Tag{language: hyIndex, locale: hyIndex}
- Indonesian Tag = Tag{language: idIndex, locale: idIndex}
- Icelandic Tag = Tag{language: isIndex, locale: isIndex}
- Italian Tag = Tag{language: itIndex, locale: itIndex}
- Japanese Tag = Tag{language: jaIndex, locale: jaIndex}
- Georgian Tag = Tag{language: kaIndex, locale: kaIndex}
- Kazakh Tag = Tag{language: kkIndex, locale: kkIndex}
- Khmer Tag = Tag{language: kmIndex, locale: kmIndex}
- Kannada Tag = Tag{language: knIndex, locale: knIndex}
- Korean Tag = Tag{language: koIndex, locale: koIndex}
- Kirghiz Tag = Tag{language: kyIndex, locale: kyIndex}
- Lao Tag = Tag{language: loIndex, locale: loIndex}
- Lithuanian Tag = Tag{language: ltIndex, locale: ltIndex}
- Latvian Tag = Tag{language: lvIndex, locale: lvIndex}
- Macedonian Tag = Tag{language: mkIndex, locale: mkIndex}
- Malayalam Tag = Tag{language: mlIndex, locale: mlIndex}
- Mongolian Tag = Tag{language: mnIndex, locale: mnIndex}
- Marathi Tag = Tag{language: mrIndex, locale: mrIndex}
- Malay Tag = Tag{language: msIndex, locale: msIndex}
- Burmese Tag = Tag{language: myIndex, locale: myIndex}
- Nepali Tag = Tag{language: neIndex, locale: neIndex}
- Dutch Tag = Tag{language: nlIndex, locale: nlIndex}
- Norwegian Tag = Tag{language: noIndex, locale: noIndex}
- Punjabi Tag = Tag{language: paIndex, locale: paIndex}
- Polish Tag = Tag{language: plIndex, locale: plIndex}
- Portuguese Tag = Tag{language: ptIndex, locale: ptIndex}
- BrazilianPortuguese Tag = Tag{language: ptBRIndex, locale: ptBRIndex}
- EuropeanPortuguese Tag = Tag{language: ptPTIndex, locale: ptPTIndex}
- Romanian Tag = Tag{language: roIndex, locale: roIndex}
- Russian Tag = Tag{language: ruIndex, locale: ruIndex}
- Sinhala Tag = Tag{language: siIndex, locale: siIndex}
- Slovak Tag = Tag{language: skIndex, locale: skIndex}
- Slovenian Tag = Tag{language: slIndex, locale: slIndex}
- Albanian Tag = Tag{language: sqIndex, locale: sqIndex}
- Serbian Tag = Tag{language: srIndex, locale: srIndex}
- SerbianLatin Tag = Tag{language: srLatnIndex, locale: srLatnIndex}
- Swedish Tag = Tag{language: svIndex, locale: svIndex}
- Swahili Tag = Tag{language: swIndex, locale: swIndex}
- Tamil Tag = Tag{language: taIndex, locale: taIndex}
- Telugu Tag = Tag{language: teIndex, locale: teIndex}
- Thai Tag = Tag{language: thIndex, locale: thIndex}
- Turkish Tag = Tag{language: trIndex, locale: trIndex}
- Ukrainian Tag = Tag{language: ukIndex, locale: ukIndex}
- Urdu Tag = Tag{language: urIndex, locale: urIndex}
- Uzbek Tag = Tag{language: uzIndex, locale: uzIndex}
- Vietnamese Tag = Tag{language: viIndex, locale: viIndex}
- Chinese Tag = Tag{language: zhIndex, locale: zhIndex}
- SimplifiedChinese Tag = Tag{language: zhHansIndex, locale: zhHansIndex}
- TraditionalChinese Tag = Tag{language: zhHantIndex, locale: zhHantIndex}
- Zulu Tag = Tag{language: zuIndex, locale: zuIndex}
-)
diff --git a/vendor/golang.org/x/text/internal/language/compose.go b/vendor/golang.org/x/text/internal/language/compose.go
deleted file mode 100644
index 4ae78e0..0000000
--- a/vendor/golang.org/x/text/internal/language/compose.go
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright 2018 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 (
- "sort"
- "strings"
-)
-
-// A Builder allows constructing a Tag from individual components.
-// Its main user is Compose in the top-level language package.
-type Builder struct {
- Tag Tag
-
- private string // the x extension
- variants []string
- extensions []string
-}
-
-// Make returns a new Tag from the current settings.
-func (b *Builder) Make() Tag {
- t := b.Tag
-
- if len(b.extensions) > 0 || len(b.variants) > 0 {
- sort.Sort(sortVariants(b.variants))
- sort.Strings(b.extensions)
-
- if b.private != "" {
- b.extensions = append(b.extensions, b.private)
- }
- n := maxCoreSize + tokenLen(b.variants...) + tokenLen(b.extensions...)
- buf := make([]byte, n)
- p := t.genCoreBytes(buf)
- t.pVariant = byte(p)
- p += appendTokens(buf[p:], b.variants...)
- t.pExt = uint16(p)
- p += appendTokens(buf[p:], b.extensions...)
- t.str = string(buf[:p])
- // We may not always need to remake the string, but when or when not
- // to do so is rather tricky.
- scan := makeScanner(buf[:p])
- t, _ = parse(&scan, "")
- return t
-
- } else if b.private != "" {
- t.str = b.private
- t.RemakeString()
- }
- return t
-}
-
-// SetTag copies all the settings from a given Tag. Any previously set values
-// are discarded.
-func (b *Builder) SetTag(t Tag) {
- b.Tag.LangID = t.LangID
- b.Tag.RegionID = t.RegionID
- b.Tag.ScriptID = t.ScriptID
- // TODO: optimize
- b.variants = b.variants[:0]
- if variants := t.Variants(); variants != "" {
- for _, vr := range strings.Split(variants[1:], "-") {
- b.variants = append(b.variants, vr)
- }
- }
- b.extensions, b.private = b.extensions[:0], ""
- for _, e := range t.Extensions() {
- b.AddExt(e)
- }
-}
-
-// AddExt adds extension e to the tag. e must be a valid extension as returned
-// by Tag.Extension. If the extension already exists, it will be discarded,
-// except for a -u extension, where non-existing key-type pairs will added.
-func (b *Builder) AddExt(e string) {
- if e[0] == 'x' {
- if b.private == "" {
- b.private = e
- }
- return
- }
- for i, s := range b.extensions {
- if s[0] == e[0] {
- if e[0] == 'u' {
- b.extensions[i] += e[1:]
- }
- return
- }
- }
- b.extensions = append(b.extensions, e)
-}
-
-// SetExt sets the extension e to the tag. e must be a valid extension as
-// returned by Tag.Extension. If the extension already exists, it will be
-// overwritten, except for a -u extension, where the individual key-type pairs
-// will be set.
-func (b *Builder) SetExt(e string) {
- if e[0] == 'x' {
- b.private = e
- return
- }
- for i, s := range b.extensions {
- if s[0] == e[0] {
- if e[0] == 'u' {
- b.extensions[i] = e + s[1:]
- } else {
- b.extensions[i] = e
- }
- return
- }
- }
- b.extensions = append(b.extensions, e)
-}
-
-// AddVariant adds any number of variants.
-func (b *Builder) AddVariant(v ...string) {
- for _, v := range v {
- if v != "" {
- b.variants = append(b.variants, v)
- }
- }
-}
-
-// ClearVariants removes any variants previously added, including those
-// copied from a Tag in SetTag.
-func (b *Builder) ClearVariants() {
- b.variants = b.variants[:0]
-}
-
-// ClearExtensions removes any extensions previously added, including those
-// copied from a Tag in SetTag.
-func (b *Builder) ClearExtensions() {
- b.private = ""
- b.extensions = b.extensions[:0]
-}
-
-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 sortVariants []string
-
-func (s sortVariants) Len() int {
- return len(s)
-}
-
-func (s sortVariants) Swap(i, j int) {
- s[j], s[i] = s[i], s[j]
-}
-
-func (s sortVariants) Less(i, j int) bool {
- return variantIndex[s[i]] < variantIndex[s[j]]
-}
diff --git a/vendor/golang.org/x/text/internal/language/coverage.go b/vendor/golang.org/x/text/internal/language/coverage.go
deleted file mode 100644
index 9b20b88..0000000
--- a/vendor/golang.org/x/text/internal/language/coverage.go
+++ /dev/null
@@ -1,28 +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 language
-
-// BaseLanguages returns the list of all supported base languages. It generates
-// the list by traversing the internal structures.
-func BaseLanguages() []Language {
- base := make([]Language, 0, NumLanguages)
- for i := 0; i < langNoIndexOffset; i++ {
- // We included "und" already for the value 0.
- if i != nonCanonicalUnd {
- base = append(base, Language(i))
- }
- }
- i := langNoIndexOffset
- for _, v := range langNoIndex {
- for k := 0; k < 8; k++ {
- if v&1 == 1 {
- base = append(base, Language(i))
- }
- v >>= 1
- i++
- }
- }
- return base
-}
diff --git a/vendor/golang.org/x/text/internal/language/language.go b/vendor/golang.org/x/text/internal/language/language.go
deleted file mode 100644
index 09d41c7..0000000
--- a/vendor/golang.org/x/text/internal/language/language.go
+++ /dev/null
@@ -1,627 +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.
-
-//go:generate go run gen.go gen_common.go -output tables.go
-
-package language // import "golang.org/x/text/internal/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. The zero value of Tag is Und.
-type Tag struct {
- // TODO: the following fields have the form TagTypeID. This name is chosen
- // to allow refactoring the public package without conflicting with its
- // Base, Script, and Region methods. Once the transition is fully completed
- // the ID can be stripped from the name.
-
- LangID Language
- RegionID Region
- // TODO: we will soon run out of positions for ScriptID. Idea: instead of
- // storing lang, region, and ScriptID codes, store only the compact index and
- // have a lookup table from this code to its expansion. This greatly speeds
- // up table lookup, speed up common variant cases.
- // This will also immediately free up 3 extra bytes. Also, the pVariant
- // field can now be moved to the lookup table, as the compact index uniquely
- // determines the offset of a possible variant.
- ScriptID Script
- 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 {
- t, _ := Parse(s)
- return t
-}
-
-// Raw returns the raw base language, script and region, without making an
-// attempt to infer their values.
-// TODO: consider removing
-func (t Tag) Raw() (b Language, s Script, r Region) {
- return t.LangID, t.ScriptID, t.RegionID
-}
-
-// equalTags compares language, script and region subtags only.
-func (t Tag) equalTags(a Tag) bool {
- return t.LangID == a.LangID && t.ScriptID == a.ScriptID && t.RegionID == a.RegionID
-}
-
-// 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)
-}
-
-// IsPrivateUse reports whether the Tag consists solely of an IsPrivateUse use
-// tag.
-func (t Tag) IsPrivateUse() bool {
- return t.str != "" && t.pVariant == 0
-}
-
-// 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 := len(b) - int(t.pVariant)
- b = append(b, '-')
- b = append(b, extra...)
- t.pVariant = uint8(int(t.pVariant) + diff)
- t.pExt = uint16(int(t.pExt) + 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.LangID.StringToBuf(buf[:])
- if t.ScriptID != 0 {
- n += copy(buf[n:], "-")
- n += copy(buf[n:], t.ScriptID.String())
- }
- if t.RegionID != 0 {
- n += copy(buf[n:], "-")
- n += copy(buf[n:], t.RegionID.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.ScriptID == 0 && t.RegionID == 0 {
- return t.LangID.String()
- }
- buf := [maxCoreSize]byte{}
- return string(buf[:t.genCoreBytes(buf[:])])
-}
-
-// MarshalText implements encoding.TextMarshaler.
-func (t Tag) MarshalText() (text []byte, err error) {
- if t.str != "" {
- text = append(text, t.str...)
- } else if t.ScriptID == 0 && t.RegionID == 0 {
- text = append(text, t.LangID.String()...)
- } else {
- buf := [maxCoreSize]byte{}
- text = buf[:t.genCoreBytes(buf[:])]
- }
- return text, nil
-}
-
-// UnmarshalText implements encoding.TextUnmarshaler.
-func (t *Tag) UnmarshalText(text []byte) error {
- tag, err := Parse(string(text))
- *t = tag
- return err
-}
-
-// Variants returns the part of the tag holding all variants or the empty string
-// if there are no variants defined.
-func (t Tag) Variants() string {
- if t.pVariant == 0 {
- return ""
- }
- return t.str[t.pVariant:t.pExt]
-}
-
-// VariantOrPrivateUseTags returns variants or private use tags.
-func (t Tag) VariantOrPrivateUseTags() string {
- if t.pExt > 0 {
- return t.str[t.pVariant:t.pExt]
- }
- return t.str[t.pVariant:]
-}
-
-// HasString reports whether this tag defines more than just the raw
-// components.
-func (t Tag) HasString() bool {
- return t.str != ""
-}
-
-// 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.
- b, s, r := t.Raw()
- t = Tag{LangID: b, ScriptID: s, RegionID: r}
- if t.RegionID == 0 && t.ScriptID != 0 && t.LangID != 0 {
- base, _ := addTags(Tag{LangID: t.LangID})
- if base.ScriptID == t.ScriptID {
- return Tag{LangID: t.LangID}
- }
- }
- return t
- }
- if t.LangID != 0 {
- if t.RegionID != 0 {
- maxScript := t.ScriptID
- if maxScript == 0 {
- max, _ := addTags(t)
- maxScript = max.ScriptID
- }
-
- for i := range parents {
- if Language(parents[i].lang) == t.LangID && Script(parents[i].maxScript) == maxScript {
- for _, r := range parents[i].fromRegion {
- if Region(r) == t.RegionID {
- return Tag{
- LangID: t.LangID,
- ScriptID: Script(parents[i].script),
- RegionID: Region(parents[i].toRegion),
- }
- }
- }
- }
- }
-
- // Strip the script if it is the default one.
- base, _ := addTags(Tag{LangID: t.LangID})
- if base.ScriptID != maxScript {
- return Tag{LangID: t.LangID, ScriptID: maxScript}
- }
- return Tag{LangID: t.LangID}
- } else if t.ScriptID != 0 {
- // The parent for an base-script pair with a non-default script is
- // "und" instead of the base language.
- base, _ := addTags(Tag{LangID: t.LangID})
- if base.ScriptID != t.ScriptID {
- return Und
- }
- return Tag{LangID: t.LangID}
- }
- }
- return Und
-}
-
-// ParseExtension parses s as an extension and returns it on success.
-func ParseExtension(s string) (ext string, err error) {
- defer func() {
- if recover() != nil {
- ext = ""
- err = ErrSyntax
- }
- }()
-
- scan := makeScannerString(s)
- var end int
- if n := len(scan.token); n != 1 {
- return "", ErrSyntax
- }
- scan.toLower(0, len(scan.b))
- end = parseExtension(&scan)
- if end != len(s) {
- return "", ErrSyntax
- }
- return string(scan.b), nil
-}
-
-// HasVariants reports whether t has variants.
-func (t Tag) HasVariants() bool {
- return uint16(t.pVariant) < t.pExt
-}
-
-// HasExtensions reports whether t has extensions.
-func (t Tag) HasExtensions() bool {
- return int(t.pExt) < len(t.str)
-}
-
-// 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 string, 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 ext, true
- }
- }
- return "", false
-}
-
-// Extensions returns all extensions of t.
-func (t Tag) Extensions() []string {
- e := []string{}
- for i := int(t.pExt); i < len(t.str)-1; {
- var ext string
- i, ext = getExtension(t.str, i)
- e = append(e, 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
-// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
-// TypeForKey will traverse the inheritance chain to get the correct value.
-//
-// If there are multiple types associated with a key, only the first will be
-// returned. If there is no type associated with a key, it returns the empty
-// string.
-func (t Tag) TypeForKey(key string) string {
- if _, start, end, _ := t.findTypeForKey(key); end != start {
- s := t.str[start:end]
- if p := strings.IndexByte(s, '-'); p >= 0 {
- s = s[:p]
- }
- return s
- }
- 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
-// https://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.IsPrivateUse() {
- return t, errPrivateUse
- }
- if len(key) != 2 {
- return t, errInvalidArguments
- }
-
- // Remove the setting if value is "".
- if value == "" {
- start, sep, end, _ := t.findTypeForKey(key)
- if start != sep {
- // Remove a possible empty extension.
- switch {
- case t.str[start-2] != '-': // has previous elements.
- case end == len(t.str), // end of string
- end+2 < len(t.str) && t.str[end+2] == '-': // end of extension
- 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, sep, end, hasExt := t.findTypeForKey(key)
- if start == sep {
- if hasExt {
- b = b[2:]
- }
- t.str = fmt.Sprintf("%s-%s%s", s[:sep], b, s[end:])
- } else {
- t.str = fmt.Sprintf("%s-%s%s", s[:start+3], value, s[end:])
- }
- }
- return t, nil
-}
-
-// findTypeForKey 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, sep, end int, hasExt bool) {
- p := int(t.pExt)
- if len(key) != 2 || p == len(t.str) || p == 0 {
- return p, p, p, false
- }
- s := t.str
-
- // Find the correct extension.
- for p++; s[p] != 'u'; p++ {
- if s[p] > 'u' {
- p--
- return p, p, p, false
- }
- if p = nextExtension(s, p); p == len(s) {
- return len(s), 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 {
- end = p
- for p++; p < len(s) && s[p] != '-'; p++ {
- }
- n := p - end - 1
- if n <= 2 && curKey == key {
- if sep < end {
- sep++
- }
- return start, sep, end, true
- }
- switch n {
- case 0, // invalid string
- 1: // next extension
- return end, end, end, true
- case 2:
- // next key
- curKey = s[end+1 : p]
- if curKey > key {
- return end, end, end, true
- }
- start = end
- sep = p
- }
- }
-}
-
-// 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) (l Language, err error) {
- defer func() {
- if recover() != nil {
- l = 0
- err = ErrSyntax
- }
- }()
-
- if n := len(s); n < 2 || 3 < n {
- return 0, ErrSyntax
- }
- var buf [3]byte
- return getLangID(buf[:copy(buf[:], s)])
-}
-
-// 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) (scr Script, err error) {
- defer func() {
- if recover() != nil {
- scr = 0
- err = ErrSyntax
- }
- }()
-
- if len(s) != 4 {
- return 0, ErrSyntax
- }
- var buf [4]byte
- return getScriptID(script, buf[:copy(buf[:], s)])
-}
-
-// 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) {
- return getRegionM49(r)
-}
-
-// 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) (r Region, err error) {
- defer func() {
- if recover() != nil {
- r = 0
- err = ErrSyntax
- }
- }()
-
- if n := len(s); n < 2 || 3 < n {
- return 0, ErrSyntax
- }
- var buf [3]byte
- return getRegionID(buf[:copy(buf[:], s)])
-}
-
-// 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 == 0 || r.IsGroup() || r.IsPrivateUse() && r != _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 == 0 {
- return false
- }
- return int(regionInclusion[r]) < 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 {
- 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 == _GB {
- r = _UK
- }
- if (r.typ() & ccTLD) == 0 {
- return 0, 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); cr != 0 {
- return cr
- }
- return r
-}
-
-// Variant represents a registered variant of a language as defined by BCP 47.
-type Variant struct {
- ID uint8
- str string
-}
-
-// ParseVariant parses and returns a Variant. An error is returned if s is not
-// a valid variant.
-func ParseVariant(s string) (v Variant, err error) {
- defer func() {
- if recover() != nil {
- v = Variant{}
- err = ErrSyntax
- }
- }()
-
- s = strings.ToLower(s)
- if id, ok := variantIndex[s]; ok {
- return Variant{id, s}, nil
- }
- return Variant{}, NewValueError([]byte(s))
-}
-
-// String returns the string representation of the variant.
-func (v Variant) String() string {
- return v.str
-}
diff --git a/vendor/golang.org/x/text/internal/language/lookup.go b/vendor/golang.org/x/text/internal/language/lookup.go
deleted file mode 100644
index 231b4fb..0000000
--- a/vendor/golang.org/x/text/internal/language/lookup.go
+++ /dev/null
@@ -1,412 +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 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, NewValueError(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 Language 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) (Language, error) {
- if len(s) == 2 {
- return getLangISO2(s)
- }
- return getLangISO3(s)
-}
-
-// TODO language normalization as well as the AliasMaps could be moved to the
-// higher level package, but it is a bit tricky to separate the generation.
-
-func (id Language) Canonicalize() (Language, AliasType) {
- return normLang(id)
-}
-
-// normLang returns the mapped langID of id according to mapping m.
-func normLang(id Language) (Language, AliasType) {
- k := sort.Search(len(AliasMap), func(i int) bool {
- return AliasMap[i].From >= uint16(id)
- })
- if k < len(AliasMap) && AliasMap[k].From == uint16(id) {
- return Language(AliasMap[k].To), AliasTypes[k]
- }
- return id, AliasTypeUnknown
-}
-
-// getLangISO2 returns the langID for the given 2-letter ISO language code
-// or unknownLang if this does not exist.
-func getLangISO2(s []byte) (Language, error) {
- if !tag.FixCase("zz", s) {
- return 0, ErrSyntax
- }
- if i := lang.Index(s); i != -1 && lang.Elem(i)[3] != 0 {
- return Language(i), nil
- }
- return 0, NewValueError(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) (Language, 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 := Language(i)
- if id == nonCanonicalUnd {
- return 0, nil
- }
- return id, nil
- }
- }
- if i := altLangISO3.Index(s); i != -1 {
- return Language(altLangIndex[altLangISO3.Elem(i)[3]]), nil
- }
- n := strToInt(s)
- if langNoIndex[n/8]&(1<<(n%8)) != 0 {
- return Language(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 Language(i), nil
- }
- }
- return 0, NewValueError(s)
- }
- return 0, ErrSyntax
-}
-
-// StringToBuf writes the string to b and returns the number of bytes
-// written. cap(b) must be >= 3.
-func (id Language) 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 Language) 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 Language) 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 Language) IsPrivateUse() bool {
- return langPrivateStart <= b && b <= langPrivateEnd
-}
-
-// SuppressScript returns the script marked as SuppressScript in the IANA
-// language tag repository, or 0 if there is no such script.
-func (b Language) SuppressScript() Script {
- if b < langNoIndexOffset {
- return Script(suppressScript[b])
- }
- return 0
-}
-
-type Region uint16
-
-// getRegionID returns the region id for s if s is a valid 2-letter region code
-// or unknownRegion.
-func getRegionID(s []byte) (Region, 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) (Region, error) {
- i, err := findIndex(regionISO, s, "ZZ")
- if err != nil {
- return 0, err
- }
- return Region(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) (Region, 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 Region(i) + isoRegionOffset, nil
- }
- }
- for i := 0; i < len(altRegionISO3); i += 3 {
- if tag.Compare(altRegionISO3[i:i+3], s) == 0 {
- return Region(altRegionIDs[i/3]), nil
- }
- }
- return 0, NewValueError(s)
- }
- return 0, ErrSyntax
-}
-
-func getRegionM49(n int) (Region, 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 Region(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 Region) Region {
- 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 Region(m[k].To)
- }
- return 0
-}
-
-const (
- iso3166UserAssigned = 1 << iota
- ccTLD
- bcp47Region
-)
-
-func (r Region) typ() byte {
- return regionTypes[r]
-}
-
-// String returns the BCP 47 representation for the region.
-// It returns "ZZ" for an unspecified region.
-func (r Region) 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 Region) 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 Region) 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 Region) IsPrivateUse() bool {
- return r.typ()&iso3166UserAssigned != 0
-}
-
-type Script uint16
-
-// 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) (Script, error) {
- i, err := findIndex(idx, s, "Zzzz")
- return Script(i), err
-}
-
-// String returns the script code in title case.
-// It returns "Zzzz" for an unspecified script.
-func (s Script) 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 Script) 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.LangID = Language(v)
- return t, true
- }
- return t, false
-}
diff --git a/vendor/golang.org/x/text/internal/language/match.go b/vendor/golang.org/x/text/internal/language/match.go
deleted file mode 100644
index 75a2dbc..0000000
--- a/vendor/golang.org/x/text/internal/language/match.go
+++ /dev/null
@@ -1,226 +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 language
-
-import "errors"
-
-type scriptRegionFlags uint8
-
-const (
- isList = 1 << iota
- scriptInFrom
- regionInFrom
-)
-
-func (t *Tag) setUndefinedLang(id Language) {
- if t.LangID == 0 {
- t.LangID = id
- }
-}
-
-func (t *Tag) setUndefinedScript(id Script) {
- if t.ScriptID == 0 {
- t.ScriptID = id
- }
-}
-
-func (t *Tag) setUndefinedRegion(id Region) {
- if t.RegionID == 0 || t.RegionID.Contains(id) {
- t.RegionID = 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 an 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.RegionID]; i < nRegionGroups {
- x := likelyRegionGroup[i]
- if Language(x.lang) == t.LangID && Script(x.script) == t.ScriptID {
- t.RegionID = Region(x.region)
- }
- return true
- }
- return false
-}
-
-// Maximize returns a new tag with missing tags filled in.
-func (t Tag) Maximize() (Tag, error) {
- return addTags(t)
-}
-
-func addTags(t Tag) (Tag, error) {
- // We leave private use identifiers alone.
- if t.IsPrivateUse() {
- return t, nil
- }
- if t.ScriptID != 0 && t.RegionID != 0 {
- if t.LangID != 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.RegionID : t.RegionID+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 Script(x.script) == t.ScriptID {
- t.setUndefinedLang(Language(x.lang))
- return t, nil
- }
- }
- }
- if t.LangID != 0 {
- // Search matches for lang-script and lang-region, where lang != und.
- if t.LangID < langNoIndexOffset {
- x := likelyLang[t.LangID]
- if x.flags&isList != 0 {
- list := likelyLangList[x.region : x.region+uint16(x.script)]
- if t.ScriptID != 0 {
- for _, x := range list {
- if Script(x.script) == t.ScriptID && x.flags&scriptInFrom != 0 {
- t.setUndefinedRegion(Region(x.region))
- return t, nil
- }
- }
- } else if t.RegionID != 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.RegionID.Contains(Region(x.region)) {
- tt.RegionID = Region(x.region)
- tt.setUndefinedScript(Script(x.script))
- goodScript = goodScript && tt.ScriptID == Script(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.ScriptID = tt.ScriptID
- }
- }
- }
- }
- } else {
- // Search matches for und-script.
- if t.ScriptID != 0 {
- x := likelyScript[t.ScriptID]
- if x.region != 0 {
- t.setUndefinedRegion(Region(x.region))
- t.setUndefinedLang(Language(x.lang))
- return t, nil
- }
- }
- // Search matches for und-region. If und-script-region exists, it would
- // have been found earlier.
- if t.RegionID != 0 {
- if i := regionInclusion[t.RegionID]; i < nRegionGroups {
- x := likelyRegionGroup[i]
- if x.region != 0 {
- t.setUndefinedLang(Language(x.lang))
- t.setUndefinedScript(Script(x.script))
- t.RegionID = Region(x.region)
- }
- } else {
- x := likelyRegion[t.RegionID]
- if x.flags&isList != 0 {
- x = likelyRegionList[x.lang]
- }
- if x.script != 0 && x.flags != scriptInFrom {
- t.setUndefinedLang(Language(x.lang))
- t.setUndefinedScript(Script(x.script))
- return t, nil
- }
- }
- }
- }
-
- // Search matches for lang.
- if t.LangID < langNoIndexOffset {
- x := likelyLang[t.LangID]
- if x.flags&isList != 0 {
- x = likelyLangList[x.region]
- }
- if x.region != 0 {
- t.setUndefinedScript(Script(x.script))
- t.setUndefinedRegion(Region(x.region))
- }
- specializeRegion(&t)
- if t.LangID == 0 {
- t.LangID = _en // default language
- }
- return t, nil
- }
- return t, ErrMissingLikelyTagsData
-}
-
-func (t *Tag) setTagsFrom(id Tag) {
- t.LangID = id.LangID
- t.ScriptID = id.ScriptID
- t.RegionID = id.RegionID
-}
-
-// 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{
- {LangID: t.LangID},
- {LangID: t.LangID, RegionID: t.RegionID},
- {LangID: t.LangID, ScriptID: t.ScriptID},
- } {
- if x, err := addTags(id); err == nil && max.equalTags(x) {
- t.setTagsFrom(id)
- break
- }
- }
- return t, nil
-}
diff --git a/vendor/golang.org/x/text/internal/language/parse.go b/vendor/golang.org/x/text/internal/language/parse.go
deleted file mode 100644
index aad1e0a..0000000
--- a/vendor/golang.org/x/text/internal/language/parse.go
+++ /dev/null
@@ -1,608 +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 language
-
-import (
- "bytes"
- "errors"
- "fmt"
- "sort"
-
- "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")
-
-// ErrDuplicateKey is returned when a tag contains the same key twice with
-// different values in the -u section.
-var ErrDuplicateKey = errors.New("language: different values for same key in -u extension")
-
-// 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
-}
-
-// NewValueError creates a new ValueError.
-func NewValueError(tag []byte) ValueError {
- var e ValueError
- copy(e.v[:], tag)
- 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
- var b []byte
- if n := len(s.b) + diff; n > cap(s.b) {
- b = make([]byte, n)
- copy(b, s.b[:oldStart])
- } else {
- b = s.b[:n]
- }
- copy(b[end:], s.b[oldEnd:])
- s.b = b
- 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.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
-// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
-func Parse(s string) (t Tag, err error) {
- // TODO: consider supporting old-style locale key-value pairs.
- if s == "" {
- return Und, ErrSyntax
- }
- defer func() {
- if recover() != nil {
- t = Und
- err = ErrSyntax
- return
- }
- }()
- 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)
- return parse(&scan, s)
-}
-
-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, true)
- 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.
-// If doNorm is true, then <lang>-<extlang> will be normalized to <extlang>.
-func parseTag(scan *scanner, doNorm bool) (t Tag, end int) {
- var e error
- // TODO: set an error if an unknown lang, script or region is encountered.
- t.LangID, e = getLangID(scan.token)
- scan.setError(e)
- scan.replace(t.LangID.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>.
- if doNorm {
- lang, e := getLangID(scan.token)
- if lang != 0 {
- t.LangID = lang
- langStr := lang.String()
- copy(scan.b[langStart:], langStr)
- scan.b[langStart+len(langStr)] = '-'
- scan.start = langStart + len(langStr) + 1
- }
- scan.gobble(e)
- }
- end = scan.scan()
- }
- if len(scan.token) == 4 && isAlpha(scan.token[0]) {
- t.ScriptID, e = getScriptID(script, scan.token)
- if t.ScriptID == 0 {
- scan.gobble(e)
- }
- end = scan.scan()
- }
- if n := len(scan.token); n >= 2 && n <= 3 {
- t.RegionID, e = getRegionID(scan.token)
- if t.RegionID == 0 {
- scan.gobble(e)
- } else {
- scan.replace(t.RegionID.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(NewValueError(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 struct {
- b [][]byte
- n int // first n bytes to compare
-}
-
-func (b bytesSort) Len() int {
- return len(b.b)
-}
-
-func (b bytesSort) Swap(i, j int) {
- b.b[i], b.b[j] = b.b[j], b.b[i]
-}
-
-func (b bytesSort) Less(i, j int) bool {
- for k := 0; k < b.n; k++ {
- if b.b[i][k] == b.b[j][k] {
- continue
- }
- return b.b[i][k] < b.b[j][k]
- }
- return false
-}
-
-// 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, 1})
- 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': // https://www.ietf.org/rfc/rfc6067.txt
- 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, 3})
- copy(scan.b[p:], bytes.Join(attrs, separator))
- break
- }
- last = scan.token
- end = scan.end
- }
- // Scan key-type sequences. A key is of length 2 and may be followed
- // by 0 or more "type" subtags from 3 to the maximum of 8 letters.
- var last, key []byte
- for attrEnd := end; len(scan.token) == 2; last = key {
- key = scan.token
- end = scan.end
- for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() {
- end = scan.end
- }
- // TODO: check key value validity
- if bytes.Compare(key, last) != 1 || scan.err != nil {
- // 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 := scan.start
- end = scan.end
- for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() {
- end = scan.end
- }
- keys = append(keys, scan.b[keyStart:end])
- }
- sort.Stable(bytesSort{keys, 2})
- if n := len(keys); n > 0 {
- k := 0
- for i := 1; i < n; i++ {
- if !bytes.Equal(keys[k][:2], keys[i][:2]) {
- k++
- keys[k] = keys[i]
- } else if !bytes.Equal(keys[k], keys[i]) {
- scan.setError(ErrDuplicateKey)
- }
- }
- keys = keys[:k+1]
- }
- reordered := bytes.Join(keys, separator)
- if e := p + len(reordered); e < end {
- scan.deleteRange(e, end)
- end = e
- }
- copy(scan.b[p:], reordered)
- break
- }
- }
- case 't': // https://www.ietf.org/rfc/rfc6497.txt
- scan.scan()
- if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) {
- _, end = parseTag(scan, false)
- 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
-}
-
-// 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)
-}
diff --git a/vendor/golang.org/x/text/internal/language/tables.go b/vendor/golang.org/x/text/internal/language/tables.go
deleted file mode 100644
index 14167e7..0000000
--- a/vendor/golang.org/x/text/internal/language/tables.go
+++ /dev/null
@@ -1,3494 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. 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 = "32"
-
-const NumLanguages = 8798
-
-const NumScripts = 261
-
-const NumRegions = 358
-
-type FromTo struct {
- From uint16
- To uint16
-}
-
-const nonCanonicalUnd = 1201
-const (
- _af = 22
- _am = 39
- _ar = 58
- _az = 88
- _bg = 126
- _bn = 165
- _ca = 215
- _cs = 250
- _da = 257
- _de = 269
- _el = 310
- _en = 313
- _es = 318
- _et = 320
- _fa = 328
- _fi = 337
- _fil = 339
- _fr = 350
- _gu = 420
- _he = 444
- _hi = 446
- _hr = 465
- _hu = 469
- _hy = 471
- _id = 481
- _is = 504
- _it = 505
- _ja = 512
- _ka = 528
- _kk = 578
- _km = 586
- _kn = 593
- _ko = 596
- _ky = 650
- _lo = 696
- _lt = 704
- _lv = 711
- _mk = 767
- _ml = 772
- _mn = 779
- _mo = 784
- _mr = 795
- _ms = 799
- _mul = 806
- _my = 817
- _nb = 839
- _ne = 849
- _nl = 871
- _no = 879
- _pa = 925
- _pl = 947
- _pt = 960
- _ro = 988
- _ru = 994
- _sh = 1031
- _si = 1036
- _sk = 1042
- _sl = 1046
- _sq = 1073
- _sr = 1074
- _sv = 1092
- _sw = 1093
- _ta = 1104
- _te = 1121
- _th = 1131
- _tl = 1146
- _tn = 1152
- _tr = 1162
- _uk = 1198
- _ur = 1204
- _uz = 1212
- _vi = 1219
- _zh = 1321
- _zu = 1327
- _jbo = 515
- _ami = 1650
- _bnn = 2357
- _hak = 438
- _tlh = 14467
- _lb = 661
- _nv = 899
- _pwn = 12055
- _tao = 14188
- _tay = 14198
- _tsu = 14662
- _nn = 874
- _sfb = 13629
- _vgt = 15701
- _sgg = 13660
- _cmn = 3007
- _nan = 835
- _hsn = 467
-)
-
-const langPrivateStart = 0x2f72
-
-const langPrivateEnd = 0x3179
-
-// 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.
-const lang tag.Index = "" + // Size: 5324 bytes
- "---\x00aaaraai\x00aak\x00aau\x00abbkabi\x00abq\x00abr\x00abt\x00aby\x00a" +
- "cd\x00ace\x00ach\x00ada\x00ade\x00adj\x00ady\x00adz\x00aeveaeb\x00aey" +
- "\x00affragc\x00agd\x00agg\x00agm\x00ago\x00agq\x00aha\x00ahl\x00aho\x00a" +
- "jg\x00akkaakk\x00ala\x00ali\x00aln\x00alt\x00ammhamm\x00amn\x00amo\x00am" +
- "p\x00anrganc\x00ank\x00ann\x00any\x00aoj\x00aom\x00aoz\x00apc\x00apd\x00" +
- "ape\x00apr\x00aps\x00apz\x00arraarc\x00arh\x00arn\x00aro\x00arq\x00ars" +
- "\x00ary\x00arz\x00assmasa\x00ase\x00asg\x00aso\x00ast\x00ata\x00atg\x00a" +
- "tj\x00auy\x00avvaavl\x00avn\x00avt\x00avu\x00awa\x00awb\x00awo\x00awx" +
- "\x00ayymayb\x00azzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bav\x00bax\x00" +
- "bba\x00bbb\x00bbc\x00bbd\x00bbj\x00bbp\x00bbr\x00bcf\x00bch\x00bci\x00bc" +
- "m\x00bcn\x00bco\x00bcq\x00bcu\x00bdd\x00beelbef\x00beh\x00bej\x00bem\x00" +
- "bet\x00bew\x00bex\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgn" +
- "\x00bgx\x00bhihbhb\x00bhg\x00bhi\x00bhk\x00bhl\x00bho\x00bhy\x00biisbib" +
- "\x00big\x00bik\x00bim\x00bin\x00bio\x00biq\x00bjh\x00bji\x00bjj\x00bjn" +
- "\x00bjo\x00bjr\x00bjt\x00bjz\x00bkc\x00bkm\x00bkq\x00bku\x00bkv\x00blt" +
- "\x00bmambmh\x00bmk\x00bmq\x00bmu\x00bnenbng\x00bnm\x00bnp\x00boodboj\x00" +
- "bom\x00bon\x00bpy\x00bqc\x00bqi\x00bqp\x00bqv\x00brrebra\x00brh\x00brx" +
- "\x00brz\x00bsosbsj\x00bsq\x00bss\x00bst\x00bto\x00btt\x00btv\x00bua\x00b" +
- "uc\x00bud\x00bug\x00buk\x00bum\x00buo\x00bus\x00buu\x00bvb\x00bwd\x00bwr" +
- "\x00bxh\x00bye\x00byn\x00byr\x00bys\x00byv\x00byx\x00bza\x00bze\x00bzf" +
- "\x00bzh\x00bzw\x00caatcan\x00cbj\x00cch\x00ccp\x00ceheceb\x00cfa\x00cgg" +
- "\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00cjv\x00ckb\x00c" +
- "kl\x00cko\x00cky\x00cla\x00cme\x00cmg\x00cooscop\x00cps\x00crrecrh\x00cr" +
- "j\x00crk\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd\x00cuhucvhvcyymda" +
- "andad\x00daf\x00dag\x00dah\x00dak\x00dar\x00dav\x00dbd\x00dbq\x00dcc\x00" +
- "ddn\x00deeuded\x00den\x00dga\x00dgh\x00dgi\x00dgl\x00dgr\x00dgz\x00dia" +
- "\x00dje\x00dnj\x00dob\x00doi\x00dop\x00dow\x00dri\x00drs\x00dsb\x00dtm" +
- "\x00dtp\x00dts\x00dty\x00dua\x00duc\x00dud\x00dug\x00dvivdva\x00dww\x00d" +
- "yo\x00dyu\x00dzzodzg\x00ebu\x00eeweefi\x00egl\x00egy\x00eka\x00eky\x00el" +
- "llema\x00emi\x00enngenn\x00enq\x00eopoeri\x00es\x00\x05esu\x00etstetr" +
- "\x00ett\x00etu\x00etx\x00euusewo\x00ext\x00faasfaa\x00fab\x00fag\x00fai" +
- "\x00fan\x00ffulffi\x00ffm\x00fiinfia\x00fil\x00fit\x00fjijflr\x00fmp\x00" +
- "foaofod\x00fon\x00for\x00fpe\x00fqs\x00frrafrc\x00frp\x00frr\x00frs\x00f" +
- "ub\x00fud\x00fue\x00fuf\x00fuh\x00fuq\x00fur\x00fuv\x00fuy\x00fvr\x00fyr" +
- "ygalegaa\x00gaf\x00gag\x00gah\x00gaj\x00gam\x00gan\x00gaw\x00gay\x00gba" +
- "\x00gbf\x00gbm\x00gby\x00gbz\x00gcr\x00gdlagde\x00gdn\x00gdr\x00geb\x00g" +
- "ej\x00gel\x00gez\x00gfk\x00ggn\x00ghs\x00gil\x00gim\x00gjk\x00gjn\x00gju" +
- "\x00gkn\x00gkp\x00gllgglk\x00gmm\x00gmv\x00gnrngnd\x00gng\x00god\x00gof" +
- "\x00goi\x00gom\x00gon\x00gor\x00gos\x00got\x00grb\x00grc\x00grt\x00grw" +
- "\x00gsw\x00guujgub\x00guc\x00gud\x00gur\x00guw\x00gux\x00guz\x00gvlvgvf" +
- "\x00gvr\x00gvs\x00gwc\x00gwi\x00gwt\x00gyi\x00haauhag\x00hak\x00ham\x00h" +
- "aw\x00haz\x00hbb\x00hdy\x00heebhhy\x00hiinhia\x00hif\x00hig\x00hih\x00hi" +
- "l\x00hla\x00hlu\x00hmd\x00hmt\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homo" +
- "hoc\x00hoj\x00hot\x00hrrvhsb\x00hsn\x00htathuunhui\x00hyyehzerianaian" +
- "\x00iar\x00iba\x00ibb\x00iby\x00ica\x00ich\x00idndidd\x00idi\x00idu\x00i" +
- "eleife\x00igboigb\x00ige\x00iiiiijj\x00ikpkikk\x00ikt\x00ikw\x00ikx\x00i" +
- "lo\x00imo\x00inndinh\x00iodoiou\x00iri\x00isslittaiukuiw\x00\x03iwm\x00i" +
- "ws\x00izh\x00izi\x00japnjab\x00jam\x00jbo\x00jbu\x00jen\x00jgk\x00jgo" +
- "\x00ji\x00\x06jib\x00jmc\x00jml\x00jra\x00jut\x00jvavjwavkaatkaa\x00kab" +
- "\x00kac\x00kad\x00kai\x00kaj\x00kam\x00kao\x00kbd\x00kbm\x00kbp\x00kbq" +
- "\x00kbx\x00kby\x00kcg\x00kck\x00kcl\x00kct\x00kde\x00kdh\x00kdl\x00kdt" +
- "\x00kea\x00ken\x00kez\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgf\x00kgp\x00k" +
- "ha\x00khb\x00khn\x00khq\x00khs\x00kht\x00khw\x00khz\x00kiikkij\x00kiu" +
- "\x00kiw\x00kjuakjd\x00kjg\x00kjs\x00kjy\x00kkazkkc\x00kkj\x00klalkln\x00" +
- "klq\x00klt\x00klx\x00kmhmkmb\x00kmh\x00kmo\x00kms\x00kmu\x00kmw\x00knank" +
- "nf\x00knp\x00koorkoi\x00kok\x00kol\x00kos\x00koz\x00kpe\x00kpf\x00kpo" +
- "\x00kpr\x00kpx\x00kqb\x00kqf\x00kqs\x00kqy\x00kraukrc\x00kri\x00krj\x00k" +
- "rl\x00krs\x00kru\x00ksasksb\x00ksd\x00ksf\x00ksh\x00ksj\x00ksr\x00ktb" +
- "\x00ktm\x00kto\x00kuurkub\x00kud\x00kue\x00kuj\x00kum\x00kun\x00kup\x00k" +
- "us\x00kvomkvg\x00kvr\x00kvx\x00kw\x00\x01kwj\x00kwo\x00kxa\x00kxc\x00kxm" +
- "\x00kxp\x00kxw\x00kxz\x00kyirkye\x00kyx\x00kzr\x00laatlab\x00lad\x00lag" +
- "\x00lah\x00laj\x00las\x00lbtzlbe\x00lbu\x00lbw\x00lcm\x00lcp\x00ldb\x00l" +
- "ed\x00lee\x00lem\x00lep\x00leq\x00leu\x00lez\x00lguglgg\x00liimlia\x00li" +
- "d\x00lif\x00lig\x00lih\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lle\x00lln" +
- "\x00lmn\x00lmo\x00lmp\x00lninlns\x00lnu\x00loaoloj\x00lok\x00lol\x00lor" +
- "\x00los\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy\x00luz\x00lvav" +
- "lwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00man\x00mas\x00ma" +
- "w\x00maz\x00mbh\x00mbo\x00mbq\x00mbu\x00mbw\x00mci\x00mcp\x00mcq\x00mcr" +
- "\x00mcu\x00mda\x00mde\x00mdf\x00mdh\x00mdj\x00mdr\x00mdx\x00med\x00mee" +
- "\x00mek\x00men\x00mer\x00met\x00meu\x00mfa\x00mfe\x00mfn\x00mfo\x00mfq" +
- "\x00mglgmgh\x00mgl\x00mgo\x00mgp\x00mgy\x00mhahmhi\x00mhl\x00mirimif\x00" +
- "min\x00mis\x00miw\x00mkkdmki\x00mkl\x00mkp\x00mkw\x00mlalmle\x00mlp\x00m" +
- "ls\x00mmo\x00mmu\x00mmx\x00mnonmna\x00mnf\x00mni\x00mnw\x00moolmoa\x00mo" +
- "e\x00moh\x00mos\x00mox\x00mpp\x00mps\x00mpt\x00mpx\x00mql\x00mrarmrd\x00" +
- "mrj\x00mro\x00mssamtltmtc\x00mtf\x00mti\x00mtr\x00mua\x00mul\x00mur\x00m" +
- "us\x00mva\x00mvn\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00mxm\x00myyamyk" +
- "\x00mym\x00myv\x00myw\x00myx\x00myz\x00mzk\x00mzm\x00mzn\x00mzp\x00mzw" +
- "\x00mzz\x00naaunac\x00naf\x00nah\x00nak\x00nan\x00nap\x00naq\x00nas\x00n" +
- "bobnca\x00nce\x00ncf\x00nch\x00nco\x00ncu\x00nddendc\x00nds\x00neepneb" +
- "\x00new\x00nex\x00nfr\x00ngdonga\x00ngb\x00ngl\x00nhb\x00nhe\x00nhw\x00n" +
- "if\x00nii\x00nij\x00nin\x00niu\x00niy\x00niz\x00njo\x00nkg\x00nko\x00nll" +
- "dnmg\x00nmz\x00nnnonnf\x00nnh\x00nnk\x00nnm\x00noornod\x00noe\x00non\x00" +
- "nop\x00nou\x00nqo\x00nrblnrb\x00nsk\x00nsn\x00nso\x00nss\x00ntm\x00ntr" +
- "\x00nui\x00nup\x00nus\x00nuv\x00nux\x00nvavnwb\x00nxq\x00nxr\x00nyyanym" +
- "\x00nyn\x00nzi\x00occiogc\x00ojjiokr\x00okv\x00omrmong\x00onn\x00ons\x00" +
- "opm\x00orrioro\x00oru\x00osssosa\x00ota\x00otk\x00ozm\x00paanpag\x00pal" +
- "\x00pam\x00pap\x00pau\x00pbi\x00pcd\x00pcm\x00pdc\x00pdt\x00ped\x00peo" +
- "\x00pex\x00pfl\x00phl\x00phn\x00pilipil\x00pip\x00pka\x00pko\x00plolpla" +
- "\x00pms\x00png\x00pnn\x00pnt\x00pon\x00ppo\x00pra\x00prd\x00prg\x00psusp" +
- "ss\x00ptorptp\x00puu\x00pwa\x00quuequc\x00qug\x00rai\x00raj\x00rao\x00rc" +
- "f\x00rej\x00rel\x00res\x00rgn\x00rhg\x00ria\x00rif\x00rjs\x00rkt\x00rmoh" +
- "rmf\x00rmo\x00rmt\x00rmu\x00rnunrna\x00rng\x00roonrob\x00rof\x00roo\x00r" +
- "ro\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00rwo\x00ryu\x00saansaf" +
- "\x00sah\x00saq\x00sas\x00sat\x00sav\x00saz\x00sba\x00sbe\x00sbp\x00scrds" +
- "ck\x00scl\x00scn\x00sco\x00scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00se" +
- "i\x00ses\x00sgagsga\x00sgs\x00sgw\x00sgz\x00sh\x00\x02shi\x00shk\x00shn" +
- "\x00shu\x00siinsid\x00sig\x00sil\x00sim\x00sjr\x00sklkskc\x00skr\x00sks" +
- "\x00sllvsld\x00sli\x00sll\x00sly\x00smmosma\x00smi\x00smj\x00smn\x00smp" +
- "\x00smq\x00sms\x00snnasnc\x00snk\x00snp\x00snx\x00sny\x00soomsok\x00soq" +
- "\x00sou\x00soy\x00spd\x00spl\x00sps\x00sqqisrrpsrb\x00srn\x00srr\x00srx" +
- "\x00ssswssd\x00ssg\x00ssy\x00stotstk\x00stq\x00suunsua\x00sue\x00suk\x00" +
- "sur\x00sus\x00svweswwaswb\x00swc\x00swg\x00swp\x00swv\x00sxn\x00sxw\x00s" +
- "yl\x00syr\x00szl\x00taamtaj\x00tal\x00tan\x00taq\x00tbc\x00tbd\x00tbf" +
- "\x00tbg\x00tbo\x00tbw\x00tbz\x00tci\x00tcy\x00tdd\x00tdg\x00tdh\x00teelt" +
- "ed\x00tem\x00teo\x00tet\x00tfi\x00tggktgc\x00tgo\x00tgu\x00thhathl\x00th" +
- "q\x00thr\x00tiirtif\x00tig\x00tik\x00tim\x00tio\x00tiv\x00tkuktkl\x00tkr" +
- "\x00tkt\x00tlgltlf\x00tlx\x00tly\x00tmh\x00tmy\x00tnsntnh\x00toontof\x00" +
- "tog\x00toq\x00tpi\x00tpm\x00tpz\x00tqo\x00trurtru\x00trv\x00trw\x00tssot" +
- "sd\x00tsf\x00tsg\x00tsj\x00tsw\x00ttatttd\x00tte\x00ttj\x00ttr\x00tts" +
- "\x00ttt\x00tuh\x00tul\x00tum\x00tuq\x00tvd\x00tvl\x00tvu\x00twwitwh\x00t" +
- "wq\x00txg\x00tyahtya\x00tyv\x00tzm\x00ubu\x00udm\x00ugiguga\x00ukkruli" +
- "\x00umb\x00und\x00unr\x00unx\x00urrduri\x00urt\x00urw\x00usa\x00utr\x00u" +
- "vh\x00uvl\x00uzzbvag\x00vai\x00van\x00veenvec\x00vep\x00viievic\x00viv" +
- "\x00vls\x00vmf\x00vmw\x00voolvot\x00vro\x00vun\x00vut\x00walnwae\x00waj" +
- "\x00wal\x00wan\x00war\x00wbp\x00wbq\x00wbr\x00wci\x00wer\x00wgi\x00whg" +
- "\x00wib\x00wiu\x00wiv\x00wja\x00wji\x00wls\x00wmo\x00wnc\x00wni\x00wnu" +
- "\x00woolwob\x00wos\x00wrs\x00wsk\x00wtm\x00wuu\x00wuv\x00wwa\x00xav\x00x" +
- "bi\x00xcr\x00xes\x00xhhoxla\x00xlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna" +
- "\x00xnr\x00xog\x00xon\x00xpr\x00xrb\x00xsa\x00xsi\x00xsm\x00xsr\x00xwe" +
- "\x00yam\x00yao\x00yap\x00yas\x00yat\x00yav\x00yay\x00yaz\x00yba\x00ybb" +
- "\x00yby\x00yer\x00ygr\x00ygw\x00yiidyko\x00yle\x00ylg\x00yll\x00yml\x00y" +
- "ooryon\x00yrb\x00yre\x00yrl\x00yss\x00yua\x00yue\x00yuj\x00yut\x00yuw" +
- "\x00zahazag\x00zbl\x00zdj\x00zea\x00zgh\x00zhhozhx\x00zia\x00zlm\x00zmi" +
- "\x00zne\x00zuulzxx\x00zza\x00\xff\xff\xff\xff"
-
-const langNoIndexOffset = 1330
-
-// 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, 0xf8, 0xed, 0xfe, 0xeb, 0xd3, 0x3b, 0xd2,
- 0xfb, 0xbf, 0x7a, 0xfa, 0x37, 0x1d, 0x3c, 0x57,
- 0x6e, 0x97, 0x73, 0x38, 0xfb, 0xea, 0xbf, 0x70,
- 0xad, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x84, 0x72,
- 0xe9, 0xbf, 0xfd, 0xbf, 0xbf, 0xf7, 0xfd, 0x77,
- 0x0f, 0xff, 0xef, 0x6f, 0xff, 0xfb, 0xdf, 0xe2,
- 0xc9, 0xf8, 0x7f, 0x7e, 0x4d, 0xbc, 0x0a, 0x6a,
- 0x7c, 0xea, 0xe3, 0xfa, 0x7a, 0xbf, 0x67, 0xff,
- // Entry 40 - 7F
- 0xff, 0xff, 0xff, 0xdf, 0x2a, 0x54, 0x91, 0xc0,
- 0x5d, 0xe3, 0x97, 0x14, 0x07, 0x20, 0xdd, 0xed,
- 0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0x35,
- 0x7c, 0x5f, 0xff, 0x5f, 0x8e, 0x6e, 0xdf, 0xff,
- 0xff, 0xff, 0x55, 0x7c, 0xd3, 0xfd, 0xbf, 0xb5,
- 0x7b, 0xdf, 0x7f, 0xf7, 0xca, 0xfe, 0xdb, 0xa3,
- 0xa8, 0xff, 0x1f, 0x67, 0x7d, 0xeb, 0xef, 0xce,
- 0xff, 0xff, 0x9f, 0xff, 0xb7, 0xef, 0xfe, 0xcf,
- // Entry 80 - BF
- 0xdb, 0xff, 0xf3, 0xcd, 0xfb, 0x7f, 0xff, 0xff,
- 0xbb, 0xee, 0xf7, 0xbd, 0xdb, 0xff, 0x5f, 0xf7,
- 0xfd, 0xf2, 0xfd, 0xff, 0x5e, 0x2f, 0x3b, 0xba,
- 0x7e, 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xdd, 0xff,
- 0xfd, 0xdf, 0xfb, 0xfe, 0x9d, 0xb4, 0xd3, 0xff,
- 0xef, 0xff, 0xdf, 0xf7, 0x7f, 0xb7, 0xfd, 0xd5,
- 0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c,
- 0x08, 0x21, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80,
- // Entry C0 - FF
- 0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96,
- 0x1b, 0x14, 0x08, 0xf3, 0x2b, 0xe7, 0x17, 0x56,
- 0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x7f, 0xf3, 0xef,
- 0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10,
- 0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xff, 0x7b, 0x35,
- 0x3e, 0xc7, 0xc7, 0xdf, 0xff, 0x01, 0x81, 0x00,
- 0xb0, 0x05, 0x80, 0x00, 0x20, 0x00, 0x00, 0x03,
- 0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d,
- // Entry 100 - 13F
- 0xfd, 0xdc, 0xbe, 0x5e, 0x00, 0x00, 0x02, 0x64,
- 0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00,
- 0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3,
- 0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x41, 0x0c,
- 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc7, 0x67, 0x5f,
- 0x56, 0x99, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00,
- 0x02, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xda, 0x56,
- 0x90, 0x6d, 0x01, 0x2e, 0x96, 0x69, 0x20, 0xfb,
- // Entry 140 - 17F
- 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x16,
- 0x03, 0x00, 0x00, 0xb0, 0x14, 0x23, 0x50, 0x06,
- 0x0a, 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x09,
- 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10,
- 0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x05,
- 0x08, 0x00, 0x00, 0x05, 0x00, 0x80, 0x28, 0x04,
- 0x00, 0x00, 0x40, 0xd5, 0x2d, 0x00, 0x64, 0x35,
- 0x24, 0x52, 0xf4, 0xd5, 0xbf, 0x62, 0xc9, 0x03,
- // Entry 180 - 1BF
- 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x13, 0x39, 0x01, 0xdd, 0x57, 0x98,
- 0x21, 0x18, 0x81, 0x08, 0x00, 0x01, 0x40, 0x82,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0x80, 0xea,
- 0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
- // Entry 1C0 - 1FF
- 0x00, 0x03, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x20, 0x04, 0xa6, 0x00, 0x04, 0x00, 0x00,
- 0x81, 0x50, 0x00, 0x00, 0x00, 0x11, 0x84, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x55,
- 0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x40,
- 0x30, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7a, 0xbf,
- // Entry 200 - 23F
- 0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27,
- 0xed, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5,
- 0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe1, 0xdf,
- 0x03, 0x44, 0x08, 0x90, 0x01, 0x04, 0x81, 0xe3,
- 0x92, 0x54, 0xdb, 0x28, 0xd3, 0x5f, 0xfe, 0x6d,
- 0x79, 0xed, 0x1c, 0x7f, 0x04, 0x08, 0x00, 0x01,
- 0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f,
- 0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54,
- // Entry 240 - 27F
- 0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00,
- 0x20, 0x7b, 0x78, 0x02, 0x07, 0x84, 0x00, 0xf0,
- 0xbb, 0x7e, 0x5a, 0x00, 0x18, 0x04, 0x81, 0x00,
- 0x00, 0x00, 0x80, 0x10, 0x90, 0x1c, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04,
- 0x08, 0xa0, 0x70, 0xa5, 0x0c, 0x40, 0x00, 0x00,
- 0x91, 0x24, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff,
- 0x7b, 0x7f, 0x70, 0x00, 0x05, 0x9b, 0xdd, 0x66,
- // Entry 280 - 2BF
- 0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05,
- 0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51,
- 0xe2, 0xef, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05,
- 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x0c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60,
- 0xe7, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80,
- 0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04,
- 0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20,
- // Entry 2C0 - 2FF
- 0x02, 0x50, 0x80, 0x11, 0x00, 0x99, 0x6c, 0xe2,
- 0x50, 0x27, 0x1d, 0x11, 0x29, 0x0e, 0x59, 0xe9,
- 0x33, 0x08, 0x00, 0x20, 0x04, 0x40, 0x10, 0x00,
- 0x00, 0x00, 0x50, 0x44, 0x92, 0x49, 0xd6, 0x5d,
- 0xa7, 0x81, 0x47, 0x97, 0xfb, 0x00, 0x10, 0x00,
- 0x08, 0x00, 0x80, 0x00, 0x40, 0x04, 0x00, 0x01,
- 0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x40, 0x08,
- 0xd8, 0xeb, 0xf6, 0x39, 0xc4, 0x8d, 0x12, 0x00,
- // Entry 300 - 33F
- 0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa0,
- 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
- 0x04, 0x10, 0xd0, 0x9d, 0x95, 0x13, 0x04, 0x80,
- 0x00, 0x01, 0xd0, 0x16, 0x40, 0x00, 0x10, 0xb0,
- 0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x4a, 0x00,
- 0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0x80,
- 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, 0xf0, 0x84, 0xe3,
- 0xdd, 0xbf, 0xf9, 0xf9, 0x3b, 0x7f, 0x7f, 0xdb,
- 0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xf6,
- 0xfb, 0xfc, 0xf7, 0x1f, 0xff, 0xb3, 0x6c, 0xff,
- 0xd9, 0xad, 0xdf, 0xfe, 0xef, 0xba, 0xdf, 0xff,
- 0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0x7f,
- 0xfd, 0xfd, 0xdf, 0x2f, 0x9c, 0xdf, 0xf3, 0x6f,
- // Entry 380 - 3BF
- 0xdf, 0xdd, 0xff, 0xfb, 0xee, 0xd2, 0xab, 0x5f,
- 0xd5, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xe4, 0x4d,
- 0xf9, 0xff, 0xfe, 0xf7, 0xfd, 0xdf, 0xfb, 0xbf,
- 0xee, 0xdb, 0x6f, 0xef, 0xff, 0x7f, 0xff, 0xff,
- 0xf7, 0x5f, 0xd3, 0x3b, 0xfd, 0xd9, 0xdf, 0xeb,
- 0xbc, 0x08, 0x05, 0x24, 0xff, 0x07, 0x70, 0xfe,
- 0xe6, 0x5e, 0x00, 0x08, 0x00, 0x83, 0x7d, 0x1f,
- 0x06, 0xe6, 0x72, 0x60, 0xd1, 0x3c, 0x7f, 0x44,
- // Entry 3C0 - 3FF
- 0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57,
- 0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7,
- 0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x20,
- 0x40, 0x54, 0x9f, 0x8a, 0xdf, 0xf9, 0x6e, 0x11,
- 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x40, 0x03,
- 0x05, 0xd1, 0x50, 0x5c, 0x00, 0x40, 0x00, 0x10,
- 0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2,
- 0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe,
- // Entry 400 - 43F
- 0x53, 0x6f, 0xdf, 0xe7, 0xdb, 0x65, 0xbb, 0x7f,
- 0xfa, 0xff, 0x77, 0xf3, 0xef, 0xbf, 0xfd, 0xf7,
- 0xdf, 0xdf, 0x9b, 0x7f, 0xff, 0xff, 0x7f, 0x6f,
- 0xf7, 0xfb, 0xeb, 0xdf, 0xbc, 0xff, 0xbf, 0x6b,
- 0x7b, 0xfb, 0xff, 0xce, 0x76, 0xbd, 0xf7, 0xf7,
- 0xdf, 0xdc, 0xf7, 0xf7, 0xff, 0xdf, 0xf3, 0xfe,
- 0xef, 0xff, 0xff, 0xff, 0xb6, 0x7f, 0x7f, 0xde,
- 0xf7, 0xb9, 0xeb, 0x77, 0xff, 0xfb, 0xbf, 0xdf,
- // Entry 440 - 47F
- 0xfd, 0xfe, 0xfb, 0xff, 0xfe, 0xeb, 0x1f, 0x7d,
- 0x2f, 0xfd, 0xb6, 0xb5, 0xa5, 0xfc, 0xff, 0xfd,
- 0x7f, 0x4e, 0xbf, 0x8f, 0xae, 0xff, 0xee, 0xdf,
- 0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7,
- 0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce,
- 0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xfd,
- 0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff,
- 0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x06, 0xc4,
- // Entry 480 - 4BF
- 0x93, 0x50, 0x5d, 0xaf, 0xa6, 0xff, 0x99, 0xfb,
- 0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20,
- 0x14, 0x00, 0x55, 0x51, 0xc2, 0x65, 0xf5, 0x41,
- 0xe2, 0xff, 0xfc, 0xdf, 0x02, 0x85, 0xc5, 0x05,
- 0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x05,
- 0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x51, 0x20, 0x05, 0x04, 0x01, 0x00, 0x00,
- 0x06, 0x11, 0x20, 0x00, 0x18, 0x01, 0x92, 0xf1,
- // Entry 4C0 - 4FF
- 0xfd, 0x47, 0x69, 0x06, 0x95, 0x06, 0x57, 0xed,
- 0xfb, 0x4d, 0x1c, 0x6b, 0x83, 0x04, 0x62, 0x40,
- 0x00, 0x11, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83,
- 0xb8, 0x4f, 0x10, 0x8e, 0x89, 0x46, 0xde, 0xf7,
- 0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00,
- 0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d,
- 0xbe, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41,
- // Entry 500 - 53F
- 0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49,
- 0x2d, 0x14, 0x27, 0x5f, 0xed, 0xf1, 0x3f, 0xe7,
- 0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8,
- 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe7, 0xf7,
- 0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7e, 0x10,
- 0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9,
- 0x5b, 0x05, 0x86, 0xed, 0xf5, 0x77, 0xbd, 0x3c,
- 0x00, 0x00, 0x00, 0x42, 0x71, 0x42, 0x00, 0x40,
- // Entry 540 - 57F
- 0x00, 0x00, 0x01, 0x43, 0x19, 0x24, 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, 0xce, 0xfb, 0xbf,
- 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x00, 0x30, 0x15, 0xa3, 0x10, 0x00, 0x00, 0x00,
- 0x11, 0x04, 0x16, 0x00, 0x00, 0x02, 0x20, 0x81,
- 0xa3, 0x01, 0x50, 0x00, 0x00, 0x83, 0x11, 0x40,
- // Entry 5C0 - 5FF
- 0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0xbe, 0x02,
- 0xaa, 0x10, 0x5d, 0x98, 0x52, 0x00, 0x80, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x02,
- 0x3d, 0x40, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d,
- 0x31, 0x00, 0x00, 0x00, 0x01, 0x18, 0x02, 0x20,
- 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00,
- 0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f,
- 0x1f, 0x98, 0xcf, 0x9c, 0xff, 0xaf, 0x5f, 0xfe,
- // Entry 600 - 63F
- 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9,
- 0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1,
- 0x73, 0xb1, 0x7f, 0x9f, 0x7f, 0xbd, 0xfc, 0xb7,
- 0xee, 0x1c, 0xfa, 0xcb, 0xef, 0xdd, 0xf9, 0xbd,
- 0x6e, 0xae, 0x55, 0xfd, 0x6e, 0x81, 0x76, 0x9f,
- 0xd4, 0x77, 0xf5, 0x7d, 0xfb, 0xff, 0xeb, 0xfe,
- 0xbe, 0x5f, 0x46, 0x5b, 0xe9, 0x5f, 0x50, 0x18,
- 0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f,
- // Entry 640 - 67F
- 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf5, 0x57, 0x6c,
- 0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde,
- 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x3f, 0x00, 0x98,
- 0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff,
- 0xb9, 0xda, 0x7d, 0xd0, 0x3e, 0x15, 0x7b, 0xb4,
- 0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7,
- 0x5f, 0xff, 0xff, 0x9e, 0xdf, 0xf6, 0xd7, 0xb9,
- 0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3,
- // Entry 680 - 6BF
- 0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37,
- 0xce, 0x7f, 0x44, 0x1d, 0x73, 0x7f, 0xf8, 0xda,
- 0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x79, 0xa0,
- 0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08,
- 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00,
- 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x09, 0x06,
- 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00,
- 0x04, 0x00, 0x10, 0xdc, 0x58, 0xd7, 0x0d, 0x0f,
- // Entry 6C0 - 6FF
- 0x54, 0x4d, 0xf1, 0x16, 0x44, 0xd5, 0x42, 0x08,
- 0x40, 0x02, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00,
- 0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x48, 0x41,
- 0x24, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00,
- 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xab,
- 0x6d, 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, 0x00, 0x00, 0x01, 0x00, 0x01,
- 0xff, 0x18, 0x02, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 740 - 77F
- 0x00, 0x00, 0x00, 0xef, 0xd5, 0xfd, 0xcf, 0x7e,
- 0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x46,
- 0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04,
- 0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a,
- 0x01, 0x00, 0x00, 0xb0, 0x80, 0x20, 0x55, 0x75,
- 0x97, 0x7c, 0xdf, 0x31, 0xcc, 0x68, 0xd1, 0x03,
- 0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60,
- // Entry 780 - 7BF
- 0x83, 0x68, 0x01, 0x10, 0x8b, 0x38, 0x8a, 0x01,
- 0x00, 0x00, 0x20, 0x00, 0x24, 0x44, 0x00, 0x00,
- 0x10, 0x03, 0x31, 0x02, 0x01, 0x00, 0x00, 0xf0,
- 0xf5, 0xff, 0xd5, 0x97, 0xbc, 0x70, 0xd6, 0x78,
- 0x78, 0x15, 0x50, 0x05, 0xa4, 0x84, 0xa9, 0x41,
- 0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x40,
- 0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02,
- 0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed,
- // Entry 7C0 - 7FF
- 0xdd, 0xbf, 0xf2, 0x5d, 0xc7, 0x0c, 0xd5, 0x42,
- 0xfc, 0xff, 0xf7, 0x1f, 0x00, 0x80, 0x40, 0x56,
- 0xcc, 0x16, 0x9e, 0xea, 0x35, 0x7d, 0xef, 0xff,
- 0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x4d,
- 0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80,
- 0x10, 0x20, 0x24, 0x00, 0xff, 0x2f, 0xd3, 0x60,
- 0xfe, 0x01, 0x02, 0x88, 0x2a, 0x40, 0x16, 0x01,
- 0x01, 0x15, 0x2b, 0x3c, 0x01, 0x00, 0x00, 0x10,
- // Entry 800 - 83F
- 0x90, 0x49, 0x41, 0x02, 0x02, 0x01, 0xe1, 0xbf,
- 0xbf, 0x03, 0x00, 0x00, 0x10, 0xdc, 0xa3, 0xd1,
- 0x40, 0x9c, 0x44, 0xdf, 0xf5, 0x8f, 0x66, 0xb3,
- 0x55, 0x20, 0xd4, 0xc1, 0xd8, 0x30, 0x3d, 0x80,
- 0x00, 0x00, 0x00, 0x04, 0xd4, 0x11, 0xc5, 0x84,
- 0x2f, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbd, 0x93,
- 0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10,
- 0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00,
- // Entry 840 - 87F
- 0xf0, 0xfb, 0xfd, 0x7f, 0x05, 0x00, 0x16, 0x89,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03,
- 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28,
- 0x84, 0x00, 0x21, 0xc0, 0x23, 0x24, 0x00, 0x00,
- 0x00, 0xcb, 0xe4, 0x3a, 0x46, 0x88, 0x54, 0xf1,
- 0xef, 0xff, 0x7f, 0x12, 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.
-const 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{
- 0x0281, 0x0407, 0x01fb, 0x03e5, 0x013e, 0x0208,
-}
-
-// AliasMap maps langIDs to their suggested replacements.
-// Size: 772 bytes, 193 elements
-var AliasMap = [193]FromTo{
- 0: {From: 0x82, To: 0x88},
- 1: {From: 0x187, To: 0x1ae},
- 2: {From: 0x1f3, To: 0x1e1},
- 3: {From: 0x1fb, To: 0x1bc},
- 4: {From: 0x208, To: 0x512},
- 5: {From: 0x20f, To: 0x20e},
- 6: {From: 0x310, To: 0x3dc},
- 7: {From: 0x347, To: 0x36f},
- 8: {From: 0x407, To: 0x432},
- 9: {From: 0x47a, To: 0x153},
- 10: {From: 0x490, To: 0x451},
- 11: {From: 0x4a2, To: 0x21},
- 12: {From: 0x53e, To: 0x544},
- 13: {From: 0x58f, To: 0x12d},
- 14: {From: 0x62b, To: 0x34},
- 15: {From: 0x62f, To: 0x14},
- 16: {From: 0x630, To: 0x1eb1},
- 17: {From: 0x651, To: 0x431},
- 18: {From: 0x662, To: 0x431},
- 19: {From: 0x6ed, To: 0x3a},
- 20: {From: 0x6f8, To: 0x1d7},
- 21: {From: 0x709, To: 0x3625},
- 22: {From: 0x73e, To: 0x21a1},
- 23: {From: 0x7b3, To: 0x56},
- 24: {From: 0x7b9, To: 0x299b},
- 25: {From: 0x7c5, To: 0x58},
- 26: {From: 0x7e6, To: 0x145},
- 27: {From: 0x80c, To: 0x5a},
- 28: {From: 0x815, To: 0x8d},
- 29: {From: 0x87e, To: 0x810},
- 30: {From: 0x8a8, To: 0x8b7},
- 31: {From: 0x8c3, To: 0xee3},
- 32: {From: 0x8fa, To: 0x1dc},
- 33: {From: 0x9ef, To: 0x331},
- 34: {From: 0xa36, To: 0x2c5},
- 35: {From: 0xa3d, To: 0xbf},
- 36: {From: 0xabe, To: 0x3322},
- 37: {From: 0xb38, To: 0x529},
- 38: {From: 0xb75, To: 0x265a},
- 39: {From: 0xb7e, To: 0xbc3},
- 40: {From: 0xb9b, To: 0x44e},
- 41: {From: 0xbbc, To: 0x4229},
- 42: {From: 0xbbf, To: 0x529},
- 43: {From: 0xbfe, To: 0x2da7},
- 44: {From: 0xc2e, To: 0x3181},
- 45: {From: 0xcb9, To: 0xf3},
- 46: {From: 0xd08, To: 0xfa},
- 47: {From: 0xdc8, To: 0x11a},
- 48: {From: 0xdd7, To: 0x32d},
- 49: {From: 0xdf8, To: 0xdfb},
- 50: {From: 0xdfe, To: 0x531},
- 51: {From: 0xe01, To: 0xdf3},
- 52: {From: 0xedf, To: 0x205a},
- 53: {From: 0xee9, To: 0x222e},
- 54: {From: 0xeee, To: 0x2e9a},
- 55: {From: 0xf39, To: 0x367},
- 56: {From: 0x10d0, To: 0x140},
- 57: {From: 0x1104, To: 0x2d0},
- 58: {From: 0x11a0, To: 0x1ec},
- 59: {From: 0x1279, To: 0x21},
- 60: {From: 0x1424, To: 0x15e},
- 61: {From: 0x1470, To: 0x14e},
- 62: {From: 0x151f, To: 0xd9b},
- 63: {From: 0x1523, To: 0x390},
- 64: {From: 0x1532, To: 0x19f},
- 65: {From: 0x1580, To: 0x210},
- 66: {From: 0x1583, To: 0x10d},
- 67: {From: 0x15a3, To: 0x3caf},
- 68: {From: 0x1630, To: 0x222e},
- 69: {From: 0x166a, To: 0x19b},
- 70: {From: 0x16c8, To: 0x136},
- 71: {From: 0x1700, To: 0x29f8},
- 72: {From: 0x1718, To: 0x194},
- 73: {From: 0x1727, To: 0xf3f},
- 74: {From: 0x177a, To: 0x178},
- 75: {From: 0x1809, To: 0x17b6},
- 76: {From: 0x1816, To: 0x18f3},
- 77: {From: 0x188a, To: 0x436},
- 78: {From: 0x1979, To: 0x1d01},
- 79: {From: 0x1a74, To: 0x2bb0},
- 80: {From: 0x1a8a, To: 0x1f8},
- 81: {From: 0x1b5a, To: 0x1fa},
- 82: {From: 0x1b86, To: 0x1515},
- 83: {From: 0x1d64, To: 0x2c9b},
- 84: {From: 0x2038, To: 0x37b1},
- 85: {From: 0x203d, To: 0x20dd},
- 86: {From: 0x2042, To: 0x2e00},
- 87: {From: 0x205a, To: 0x30b},
- 88: {From: 0x20e3, To: 0x274},
- 89: {From: 0x20ee, To: 0x263},
- 90: {From: 0x20f2, To: 0x22d},
- 91: {From: 0x20f9, To: 0x256},
- 92: {From: 0x210f, To: 0x21eb},
- 93: {From: 0x2135, To: 0x27d},
- 94: {From: 0x2160, To: 0x913},
- 95: {From: 0x2199, To: 0x121},
- 96: {From: 0x21ce, To: 0x1561},
- 97: {From: 0x21e6, To: 0x504},
- 98: {From: 0x21f4, To: 0x49f},
- 99: {From: 0x21fb, To: 0x269},
- 100: {From: 0x222d, To: 0x121},
- 101: {From: 0x2237, To: 0x121},
- 102: {From: 0x2248, To: 0x217d},
- 103: {From: 0x2262, To: 0x92a},
- 104: {From: 0x2316, To: 0x3226},
- 105: {From: 0x236a, To: 0x2835},
- 106: {From: 0x2382, To: 0x3365},
- 107: {From: 0x2472, To: 0x2c7},
- 108: {From: 0x24e4, To: 0x2ff},
- 109: {From: 0x24f0, To: 0x2fa},
- 110: {From: 0x24fa, To: 0x31f},
- 111: {From: 0x2550, To: 0xb5b},
- 112: {From: 0x25a9, To: 0xe2},
- 113: {From: 0x263e, To: 0x2d0},
- 114: {From: 0x26c9, To: 0x26b4},
- 115: {From: 0x26f9, To: 0x3c8},
- 116: {From: 0x2727, To: 0x3caf},
- 117: {From: 0x2755, To: 0x6a4},
- 118: {From: 0x2765, To: 0x26b4},
- 119: {From: 0x2789, To: 0x4358},
- 120: {From: 0x27c9, To: 0x2001},
- 121: {From: 0x28ea, To: 0x27b1},
- 122: {From: 0x28ef, To: 0x2837},
- 123: {From: 0x28fe, To: 0xaa5},
- 124: {From: 0x2914, To: 0x351},
- 125: {From: 0x2986, To: 0x2da7},
- 126: {From: 0x29f0, To: 0x96b},
- 127: {From: 0x2b1a, To: 0x38d},
- 128: {From: 0x2bfc, To: 0x395},
- 129: {From: 0x2c3f, To: 0x3caf},
- 130: {From: 0x2ce1, To: 0x2201},
- 131: {From: 0x2cfc, To: 0x3be},
- 132: {From: 0x2d13, To: 0x597},
- 133: {From: 0x2d47, To: 0x148},
- 134: {From: 0x2d48, To: 0x148},
- 135: {From: 0x2dff, To: 0x2f1},
- 136: {From: 0x2e08, To: 0x19cc},
- 137: {From: 0x2e10, To: 0xc45},
- 138: {From: 0x2e1a, To: 0x2d95},
- 139: {From: 0x2e21, To: 0x292},
- 140: {From: 0x2e54, To: 0x7d},
- 141: {From: 0x2e65, To: 0x2282},
- 142: {From: 0x2e97, To: 0x1a4},
- 143: {From: 0x2ea0, To: 0x2e9b},
- 144: {From: 0x2eef, To: 0x2ed7},
- 145: {From: 0x3193, To: 0x3c4},
- 146: {From: 0x3366, To: 0x338e},
- 147: {From: 0x342a, To: 0x3dc},
- 148: {From: 0x34ee, To: 0x18d0},
- 149: {From: 0x35c8, To: 0x2c9b},
- 150: {From: 0x35e6, To: 0x412},
- 151: {From: 0x35f5, To: 0x24b},
- 152: {From: 0x360d, To: 0x1dc},
- 153: {From: 0x3658, To: 0x246},
- 154: {From: 0x3676, To: 0x3f4},
- 155: {From: 0x36fd, To: 0x445},
- 156: {From: 0x3747, To: 0x3b42},
- 157: {From: 0x37c0, To: 0x121},
- 158: {From: 0x3816, To: 0x38f2},
- 159: {From: 0x382a, To: 0x2b48},
- 160: {From: 0x382b, To: 0x2c9b},
- 161: {From: 0x382f, To: 0xa9},
- 162: {From: 0x3832, To: 0x3228},
- 163: {From: 0x386c, To: 0x39a6},
- 164: {From: 0x3892, To: 0x3fc0},
- 165: {From: 0x38a0, To: 0x45f},
- 166: {From: 0x38a5, To: 0x39d7},
- 167: {From: 0x38b4, To: 0x1fa4},
- 168: {From: 0x38b5, To: 0x2e9a},
- 169: {From: 0x38fa, To: 0x38f1},
- 170: {From: 0x395c, To: 0x47e},
- 171: {From: 0x3b4e, To: 0xd91},
- 172: {From: 0x3b78, To: 0x137},
- 173: {From: 0x3c99, To: 0x4bc},
- 174: {From: 0x3fbd, To: 0x100},
- 175: {From: 0x4208, To: 0xa91},
- 176: {From: 0x42be, To: 0x573},
- 177: {From: 0x42f9, To: 0x3f60},
- 178: {From: 0x4378, To: 0x25a},
- 179: {From: 0x43b8, To: 0xe6c},
- 180: {From: 0x43cd, To: 0x10f},
- 181: {From: 0x43d4, To: 0x4848},
- 182: {From: 0x44af, To: 0x3322},
- 183: {From: 0x44e3, To: 0x512},
- 184: {From: 0x45ca, To: 0x2409},
- 185: {From: 0x45dd, To: 0x26dc},
- 186: {From: 0x4610, To: 0x48ae},
- 187: {From: 0x46ae, To: 0x46a0},
- 188: {From: 0x473e, To: 0x4745},
- 189: {From: 0x4817, To: 0x3503},
- 190: {From: 0x483b, To: 0x208b},
- 191: {From: 0x4916, To: 0x31f},
- 192: {From: 0x49a7, To: 0x523},
-}
-
-// Size: 193 bytes, 193 elements
-var AliasTypes = [193]AliasType{
- // Entry 0 - 3F
- 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 0, 0,
- 1, 2, 1, 1, 2, 0, 0, 1, 0, 1, 2, 1, 1, 0, 0, 0,
- 0, 2, 1, 1, 0, 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1,
- 1, 1, 1, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 1, 0, 1,
- // Entry 40 - 7F
- 1, 2, 2, 0, 0, 1, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0,
- 2, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2, 0,
- 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- // Entry 80 - BF
- 1, 0, 0, 1, 0, 2, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 1, 1, 2, 0, 0, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 0,
- 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1,
- // Entry C0 - FF
- 1,
-}
-
-const (
- _Latn = 91
- _Hani = 57
- _Hans = 59
- _Hant = 60
- _Qaaa = 149
- _Qaai = 157
- _Qabx = 198
- _Zinh = 255
- _Zyyy = 260
- _Zzzz = 261
-)
-
-// 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.
-const script tag.Index = "" + // Size: 1052 bytes
- "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" +
- "BrahBraiBugiBuhdCakmCansCariChamCherChrsCirtCoptCpmnCprtCyrlCyrsDevaDiak" +
- "DogrDsrtDuplEgydEgyhEgypElbaElymEthiGeokGeorGlagGongGonmGothGranGrekGujr" +
- "GuruHanbHangHaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamo" +
- "JavaJpanJurcKaliKanaKawiKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatf" +
- "LatgLatnLekeLepcLimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedf" +
- "MendMercMeroMlymModiMongMoonMrooMteiMultMymrNagmNandNarbNbatNewaNkdbNkgb" +
- "NkooNshuOgamOlckOrkhOryaOsgeOsmaOugrPalmPaucPcunPelmPermPhagPhliPhlpPhlv" +
- "PhnxPiqdPlrdPrtiPsinQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaam" +
- "QaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe" +
- "QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabw" +
- "QabxRanjRjngRohgRoroRunrSamrSaraSarbSaurSgnwShawShrdShuiSiddSindSinhSogd" +
- "SogoSoraSoyoSundSunuSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTelu" +
- "TengTfngTglgThaaThaiTibtTirhTnsaTotoUgarVaiiVispVithWaraWchoWoleXpeoXsux" +
- "YeziYiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz\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: 1330 bytes, 1330 elements
-var suppressScript = [1330]uint8{
- // Entry 0 - 3F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 40 - 7F
- 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 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, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- // Entry 80 - BF
- 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, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry C0 - FF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5b, 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, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 100 - 13F
- 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xed, 0x00, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00,
- 0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x5b, 0x00,
- // Entry 140 - 17F
- 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,
- 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,
- 0x00, 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 180 - 1BF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x5b, 0x35, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x22, 0x00,
- // Entry 1C0 - 1FF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x5b, 0x5b, 0x00, 0x5b, 0x5b, 0x00, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,
- 0x5b, 0x5b, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
- // Entry 200 - 23F
- 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x2e, 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,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 240 - 27F
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00,
- 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x53, 0x00, 0x00, 0x54, 0x00, 0x22, 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, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 280 - 2BF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 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, 0x5b, 0x00, 0x00,
- 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 2C0 - 2FF
- 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 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,
- 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- // Entry 300 - 33F
- 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5b,
- 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,
- // Entry 340 - 37F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,
- 0x5b, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5b, 0x00,
- 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 380 - 3BF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5b, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
- // Entry 3C0 - 3FF
- 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
- 0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 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,
- // Entry 400 - 43F
- 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00,
- 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,
- // Entry 440 - 47F
- 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xe9, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2c,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00,
- // Entry 480 - 4BF
- 0x5b, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00,
- 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 4C0 - 4FF
- 0x5b, 0x00, 0x00, 0x5b, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Entry 500 - 53F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
- 0x00, 0x00,
-}
-
-const (
- _001 = 1
- _419 = 31
- _BR = 65
- _CA = 73
- _ES = 111
- _GB = 124
- _MD = 189
- _PT = 239
- _UK = 307
- _US = 310
- _ZZ = 358
- _XA = 324
- _XC = 326
- _XK = 334
-)
-
-// 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 = 32
-
-// regionTypes defines the status of a region for various standards.
-// Size: 359 bytes, 359 elements
-var regionTypes = [359]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, 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,
- // Entry 40 - 7F
- 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 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, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06,
- 0x00, 0x06, 0x04, 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, 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,
- // Entry C0 - FF
- 0x06, 0x06, 0x00, 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,
- // Entry 100 - 13F
- 0x05, 0x05, 0x05, 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, 0x04, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06,
- // Entry 140 - 17F
- 0x06, 0x06, 0x00, 0x06, 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.
-const regionISO tag.Index = "" + // Size: 1312 bytes
- "AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA" +
- "AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN" +
- "BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT" +
- "CQ CRRICS\x00\x00CTTECUUBCVPVCWUWCXXRCYYPCZZEDDDRDEEUDGGADJJIDKNKDMMADO" +
- "OMDYHYDZZAEA ECCUEESTEGGYEHSHERRIESSPETTHEU\x00\x03EZ FIINFJJIFKLKFMSM" +
- "FOROFQ\x00\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQ" +
- "NQGRRCGS\x00\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC IDDNIERL" +
- "ILSRIMMNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM" +
- "\x00\x09KNNAKP\x00\x0cKRORKWWTKY\x00\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSO" +
- "LTTULUUXLVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNP" +
- "MQTQMRRTMSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLD" +
- "NOORNPPLNQ\x00\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM" +
- "\x00\x12PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSS" +
- "QTTTQU\x00\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\x00\x15RUUSRWWASAAUSBLB" +
- "SCYCSDDNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXM" +
- "SYYRSZWZTAAATCCATDCDTF\x00\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTT" +
- "TOTVUVTWWNTZZAUAKRUGGAUK UMMIUN USSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVN" +
- "NMVUUTWFLFWKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXN" +
- "NNXOOOXPPPXQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\x00\x1bYUUG" +
- "ZAAFZMMBZRARZWWEZZZZ\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.
-const 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{
- 0x0058, 0x0071, 0x0089, 0x00a9, 0x00ab, 0x00ae, 0x00eb, 0x0106,
- 0x0122, 0x0160, 0x00dd,
-}
-
-// Size: 80 bytes, 20 elements
-var regionOldMap = [20]FromTo{
- 0: {From: 0x44, To: 0xc5},
- 1: {From: 0x59, To: 0xa8},
- 2: {From: 0x60, To: 0x61},
- 3: {From: 0x67, To: 0x3b},
- 4: {From: 0x7a, To: 0x79},
- 5: {From: 0x94, To: 0x37},
- 6: {From: 0xa4, To: 0x134},
- 7: {From: 0xc2, To: 0x134},
- 8: {From: 0xd8, To: 0x140},
- 9: {From: 0xdd, To: 0x2b},
- 10: {From: 0xf0, To: 0x134},
- 11: {From: 0xf3, To: 0xe3},
- 12: {From: 0xfd, To: 0x71},
- 13: {From: 0x104, To: 0x165},
- 14: {From: 0x12b, To: 0x127},
- 15: {From: 0x133, To: 0x7c},
- 16: {From: 0x13b, To: 0x13f},
- 17: {From: 0x142, To: 0x134},
- 18: {From: 0x15e, To: 0x15f},
- 19: {From: 0x164, To: 0x4b},
-}
-
-// m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are
-// codes indicating collections of regions.
-// Size: 718 bytes, 359 elements
-var m49 = [359]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, 202, 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,
- // Entry 40 - 7F
- 535, 76, 44, 64, 104, 74, 72, 112,
- 84, 124, 166, 180, 140, 178, 756, 384,
- 184, 152, 120, 156, 170, 0, 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, 0, 246, 242, 238, 583, 234,
- 0, 250, 249, 266, 826, 308, 268, 254,
- // Entry 80 - BF
- 831, 288, 292, 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,
- // Entry C0 - FF
- 450, 584, 581, 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,
- // Entry 100 - 13F
- 970, 971, 972, 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, 0, 840, 858,
- 860, 336, 670, 704, 862, 92, 850, 704,
- // Entry 140 - 17F
- 548, 876, 581, 882, 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, 108, 143, 181, 220, 259, 291,
- 333,
-}
-
-// fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details.
-// Size: 666 bytes, 333 elements
-var fromM49 = [333]uint16{
- // Entry 0 - 3F
- 0x0201, 0x0402, 0x0603, 0x0824, 0x0a04, 0x1027, 0x1205, 0x142b,
- 0x1606, 0x1868, 0x1a07, 0x1c08, 0x1e09, 0x202d, 0x220a, 0x240b,
- 0x260c, 0x2822, 0x2a0d, 0x302a, 0x3825, 0x3a0e, 0x3c0f, 0x3e32,
- 0x402c, 0x4410, 0x4611, 0x482f, 0x4e12, 0x502e, 0x5842, 0x6039,
- 0x6435, 0x6628, 0x6834, 0x6a13, 0x6c14, 0x7036, 0x7215, 0x783d,
- 0x7a16, 0x8043, 0x883f, 0x8c33, 0x9046, 0x9445, 0x9841, 0xa848,
- 0xac9b, 0xb50a, 0xb93d, 0xc03e, 0xc838, 0xd0c5, 0xd83a, 0xe047,
- 0xe8a7, 0xf052, 0xf849, 0x085b, 0x10ae, 0x184c, 0x1c17, 0x1e18,
- // Entry 40 - 7F
- 0x20b4, 0x2219, 0x2921, 0x2c1a, 0x2e1b, 0x3051, 0x341c, 0x361d,
- 0x3853, 0x3d2f, 0x445d, 0x4c4a, 0x5454, 0x5ca9, 0x5f60, 0x644d,
- 0x684b, 0x7050, 0x7857, 0x7e91, 0x805a, 0x885e, 0x941e, 0x965f,
- 0x983b, 0xa064, 0xa865, 0xac66, 0xb46a, 0xbd1b, 0xc487, 0xcc70,
- 0xce70, 0xd06e, 0xd26b, 0xd477, 0xdc75, 0xde89, 0xe474, 0xec73,
- 0xf031, 0xf27a, 0xf479, 0xfc7f, 0x04e6, 0x0922, 0x0c63, 0x147b,
- 0x187e, 0x1c84, 0x26ee, 0x2861, 0x2c60, 0x3061, 0x4081, 0x4882,
- 0x50a8, 0x5888, 0x6083, 0x687d, 0x7086, 0x788b, 0x808a, 0x8885,
- // Entry 80 - BF
- 0x908d, 0x9892, 0x9c8f, 0xa139, 0xa890, 0xb08e, 0xb893, 0xc09e,
- 0xc89a, 0xd096, 0xd89d, 0xe09c, 0xe897, 0xf098, 0xf89f, 0x004f,
- 0x08a1, 0x10a3, 0x1caf, 0x20a2, 0x28a5, 0x30ab, 0x34ac, 0x3cad,
- 0x42a6, 0x44b0, 0x461f, 0x4cb1, 0x54b6, 0x58b9, 0x5cb5, 0x64ba,
- 0x6cb3, 0x70b7, 0x74b8, 0x7cc7, 0x84c0, 0x8ccf, 0x94d1, 0x9cce,
- 0xa4c4, 0xaccc, 0xb4c9, 0xbcca, 0xc0cd, 0xc8d0, 0xd8bc, 0xe0c6,
- 0xe4bd, 0xe6be, 0xe8cb, 0xf0bb, 0xf8d2, 0x00e2, 0x08d3, 0x10de,
- 0x18dc, 0x20da, 0x2429, 0x265c, 0x2a30, 0x2d1c, 0x2e40, 0x30df,
- // Entry C0 - FF
- 0x38d4, 0x4940, 0x54e1, 0x5cd9, 0x64d5, 0x6cd7, 0x74e0, 0x7cd6,
- 0x84db, 0x88c8, 0x8b34, 0x8e76, 0x90c1, 0x92f1, 0x94e9, 0x9ee3,
- 0xace7, 0xb0f2, 0xb8e5, 0xc0e8, 0xc8ec, 0xd0ea, 0xd8ef, 0xe08c,
- 0xe527, 0xeced, 0xf4f4, 0xfd03, 0x0505, 0x0707, 0x0d08, 0x183c,
- 0x1d0f, 0x26aa, 0x2826, 0x2cb2, 0x2ebf, 0x34eb, 0x3d3a, 0x4514,
- 0x4d19, 0x5509, 0x5d15, 0x6106, 0x650b, 0x6d13, 0x7d0e, 0x7f12,
- 0x813f, 0x8310, 0x8516, 0x8d62, 0x9965, 0xa15e, 0xa86f, 0xb118,
- 0xb30c, 0xb86d, 0xc10c, 0xc917, 0xd111, 0xd91e, 0xe10d, 0xe84e,
- // Entry 100 - 13F
- 0xf11d, 0xf525, 0xf924, 0x0123, 0x0926, 0x112a, 0x192d, 0x2023,
- 0x2929, 0x312c, 0x3728, 0x3920, 0x3d2e, 0x4132, 0x4931, 0x4ec3,
- 0x551a, 0x646c, 0x747c, 0x7e80, 0x80a0, 0x8299, 0x8530, 0x9136,
- 0xa53e, 0xac37, 0xb537, 0xb938, 0xbd3c, 0xd941, 0xe543, 0xed5f,
- 0xef5f, 0xf658, 0xfd63, 0x7c20, 0x7ef5, 0x80f6, 0x82f7, 0x84f8,
- 0x86f9, 0x88fa, 0x8afb, 0x8cfc, 0x8e71, 0x90fe, 0x92ff, 0x9500,
- 0x9701, 0x9902, 0x9b44, 0x9d45, 0x9f46, 0xa147, 0xa348, 0xa549,
- 0xa74a, 0xa94b, 0xab4c, 0xad4d, 0xaf4e, 0xb14f, 0xb350, 0xb551,
- // Entry 140 - 17F
- 0xb752, 0xb953, 0xbb54, 0xbd55, 0xbf56, 0xc157, 0xc358, 0xc559,
- 0xc75a, 0xc95b, 0xcb5c, 0xcd5d, 0xcf66,
-}
-
-// Size: 2128 bytes
-var variantIndex = map[string]uint8{
- "1606nict": 0x0,
- "1694acad": 0x1,
- "1901": 0x2,
- "1959acad": 0x3,
- "1994": 0x67,
- "1996": 0x4,
- "abl1943": 0x5,
- "akuapem": 0x6,
- "alalc97": 0x69,
- "aluku": 0x7,
- "ao1990": 0x8,
- "aranes": 0x9,
- "arevela": 0xa,
- "arevmda": 0xb,
- "arkaika": 0xc,
- "asante": 0xd,
- "auvern": 0xe,
- "baku1926": 0xf,
- "balanka": 0x10,
- "barla": 0x11,
- "basiceng": 0x12,
- "bauddha": 0x13,
- "bciav": 0x14,
- "bcizbl": 0x15,
- "biscayan": 0x16,
- "biske": 0x62,
- "bohoric": 0x17,
- "boont": 0x18,
- "bornholm": 0x19,
- "cisaup": 0x1a,
- "colb1945": 0x1b,
- "cornu": 0x1c,
- "creiss": 0x1d,
- "dajnko": 0x1e,
- "ekavsk": 0x1f,
- "emodeng": 0x20,
- "fonipa": 0x6a,
- "fonkirsh": 0x6b,
- "fonnapa": 0x6c,
- "fonupa": 0x6d,
- "fonxsamp": 0x6e,
- "gallo": 0x21,
- "gascon": 0x22,
- "grclass": 0x23,
- "grital": 0x24,
- "grmistr": 0x25,
- "hepburn": 0x26,
- "heploc": 0x68,
- "hognorsk": 0x27,
- "hsistemo": 0x28,
- "ijekavsk": 0x29,
- "itihasa": 0x2a,
- "ivanchov": 0x2b,
- "jauer": 0x2c,
- "jyutping": 0x2d,
- "kkcor": 0x2e,
- "kociewie": 0x2f,
- "kscor": 0x30,
- "laukika": 0x31,
- "lemosin": 0x32,
- "lengadoc": 0x33,
- "lipaw": 0x63,
- "ltg1929": 0x34,
- "ltg2007": 0x35,
- "luna1918": 0x36,
- "metelko": 0x37,
- "monoton": 0x38,
- "ndyuka": 0x39,
- "nedis": 0x3a,
- "newfound": 0x3b,
- "nicard": 0x3c,
- "njiva": 0x64,
- "nulik": 0x3d,
- "osojs": 0x65,
- "oxendict": 0x3e,
- "pahawh2": 0x3f,
- "pahawh3": 0x40,
- "pahawh4": 0x41,
- "pamaka": 0x42,
- "peano": 0x43,
- "petr1708": 0x44,
- "pinyin": 0x45,
- "polyton": 0x46,
- "provenc": 0x47,
- "puter": 0x48,
- "rigik": 0x49,
- "rozaj": 0x4a,
- "rumgr": 0x4b,
- "scotland": 0x4c,
- "scouse": 0x4d,
- "simple": 0x6f,
- "solba": 0x66,
- "sotav": 0x4e,
- "spanglis": 0x4f,
- "surmiran": 0x50,
- "sursilv": 0x51,
- "sutsilv": 0x52,
- "synnejyl": 0x53,
- "tarask": 0x54,
- "tongyong": 0x55,
- "tunumiit": 0x56,
- "uccor": 0x57,
- "ucrcor": 0x58,
- "ulster": 0x59,
- "unifon": 0x5a,
- "vaidika": 0x5b,
- "valencia": 0x5c,
- "vallader": 0x5d,
- "vecdruka": 0x5e,
- "vivaraup": 0x5f,
- "wadegile": 0x60,
- "xsistemo": 0x61,
-}
-
-// variantNumSpecialized is the number of specialized variants in variants.
-const variantNumSpecialized = 105
-
-// nRegionGroups is the number of region groups.
-const nRegionGroups = 33
-
-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: 1052 bytes, 263 elements
-var likelyScript = [263]likelyLangRegion{
- 1: {lang: 0x14e, region: 0x85},
- 3: {lang: 0x2a2, region: 0x107},
- 4: {lang: 0x1f, region: 0x9a},
- 5: {lang: 0x3a, region: 0x6c},
- 7: {lang: 0x3b, region: 0x9d},
- 8: {lang: 0x1d7, region: 0x28},
- 9: {lang: 0x13, region: 0x9d},
- 10: {lang: 0x5b, region: 0x96},
- 11: {lang: 0x60, region: 0x52},
- 12: {lang: 0xb9, region: 0xb5},
- 13: {lang: 0x63, region: 0x96},
- 14: {lang: 0xa5, region: 0x35},
- 15: {lang: 0x3e9, region: 0x9a},
- 17: {lang: 0x529, region: 0x12f},
- 18: {lang: 0x3b1, region: 0x9a},
- 19: {lang: 0x15e, region: 0x79},
- 20: {lang: 0xc2, region: 0x96},
- 21: {lang: 0x9d, region: 0xe8},
- 22: {lang: 0xdb, region: 0x35},
- 23: {lang: 0xf3, region: 0x49},
- 24: {lang: 0x4f0, region: 0x12c},
- 25: {lang: 0xe7, region: 0x13f},
- 26: {lang: 0xe5, region: 0x136},
- 29: {lang: 0xf1, region: 0x6c},
- 31: {lang: 0x1a0, region: 0x5e},
- 32: {lang: 0x3e2, region: 0x107},
- 34: {lang: 0x1be, region: 0x9a},
- 38: {lang: 0x15e, region: 0x79},
- 41: {lang: 0x133, region: 0x6c},
- 42: {lang: 0x431, region: 0x27},
- 44: {lang: 0x27, region: 0x70},
- 46: {lang: 0x210, region: 0x7e},
- 47: {lang: 0xfe, region: 0x38},
- 49: {lang: 0x19b, region: 0x9a},
- 50: {lang: 0x19e, region: 0x131},
- 51: {lang: 0x3e9, region: 0x9a},
- 52: {lang: 0x136, region: 0x88},
- 53: {lang: 0x1a4, region: 0x9a},
- 54: {lang: 0x39d, region: 0x9a},
- 55: {lang: 0x529, region: 0x12f},
- 56: {lang: 0x254, region: 0xac},
- 57: {lang: 0x529, region: 0x53},
- 58: {lang: 0x1cb, region: 0xe8},
- 59: {lang: 0x529, region: 0x53},
- 60: {lang: 0x529, region: 0x12f},
- 61: {lang: 0x2fd, region: 0x9c},
- 62: {lang: 0x1bc, region: 0x98},
- 63: {lang: 0x200, region: 0xa3},
- 64: {lang: 0x1c5, region: 0x12c},
- 65: {lang: 0x1ca, region: 0xb0},
- 68: {lang: 0x1d5, region: 0x93},
- 70: {lang: 0x142, region: 0x9f},
- 71: {lang: 0x254, region: 0xac},
- 72: {lang: 0x20e, region: 0x96},
- 73: {lang: 0x200, region: 0xa3},
- 75: {lang: 0x135, region: 0xc5},
- 76: {lang: 0x200, region: 0xa3},
- 78: {lang: 0x3bb, region: 0xe9},
- 79: {lang: 0x24a, region: 0xa7},
- 80: {lang: 0x3fa, region: 0x9a},
- 83: {lang: 0x251, region: 0x9a},
- 84: {lang: 0x254, region: 0xac},
- 86: {lang: 0x88, region: 0x9a},
- 87: {lang: 0x370, region: 0x124},
- 88: {lang: 0x2b8, region: 0xb0},
- 93: {lang: 0x29f, region: 0x9a},
- 94: {lang: 0x2a8, region: 0x9a},
- 95: {lang: 0x28f, region: 0x88},
- 96: {lang: 0x1a0, region: 0x88},
- 97: {lang: 0x2ac, region: 0x53},
- 99: {lang: 0x4f4, region: 0x12c},
- 100: {lang: 0x4f5, region: 0x12c},
- 101: {lang: 0x1be, region: 0x9a},
- 103: {lang: 0x337, region: 0x9d},
- 104: {lang: 0x4f7, region: 0x53},
- 105: {lang: 0xa9, region: 0x53},
- 108: {lang: 0x2e8, region: 0x113},
- 109: {lang: 0x4f8, region: 0x10c},
- 110: {lang: 0x4f8, region: 0x10c},
- 111: {lang: 0x304, region: 0x9a},
- 112: {lang: 0x31b, region: 0x9a},
- 113: {lang: 0x30b, region: 0x53},
- 115: {lang: 0x31e, region: 0x35},
- 116: {lang: 0x30e, region: 0x9a},
- 117: {lang: 0x414, region: 0xe9},
- 118: {lang: 0x331, region: 0xc5},
- 121: {lang: 0x4f9, region: 0x109},
- 122: {lang: 0x3b, region: 0xa2},
- 123: {lang: 0x353, region: 0xdc},
- 126: {lang: 0x2d0, region: 0x85},
- 127: {lang: 0x52a, region: 0x53},
- 128: {lang: 0x403, region: 0x97},
- 129: {lang: 0x3ee, region: 0x9a},
- 130: {lang: 0x39b, region: 0xc6},
- 131: {lang: 0x395, region: 0x9a},
- 132: {lang: 0x399, region: 0x136},
- 133: {lang: 0x429, region: 0x116},
- 135: {lang: 0x3b, region: 0x11d},
- 136: {lang: 0xfd, region: 0xc5},
- 139: {lang: 0x27d, region: 0x107},
- 140: {lang: 0x2c9, region: 0x53},
- 141: {lang: 0x39f, region: 0x9d},
- 142: {lang: 0x39f, region: 0x53},
- 144: {lang: 0x3ad, region: 0xb1},
- 146: {lang: 0x1c6, region: 0x53},
- 147: {lang: 0x4fd, region: 0x9d},
- 200: {lang: 0x3cb, region: 0x96},
- 203: {lang: 0x372, region: 0x10d},
- 204: {lang: 0x420, region: 0x98},
- 206: {lang: 0x4ff, region: 0x15f},
- 207: {lang: 0x3f0, region: 0x9a},
- 208: {lang: 0x45, region: 0x136},
- 209: {lang: 0x139, region: 0x7c},
- 210: {lang: 0x3e9, region: 0x9a},
- 212: {lang: 0x3e9, region: 0x9a},
- 213: {lang: 0x3fa, region: 0x9a},
- 214: {lang: 0x40c, region: 0xb4},
- 217: {lang: 0x433, region: 0x9a},
- 218: {lang: 0xef, region: 0xc6},
- 219: {lang: 0x43e, region: 0x96},
- 221: {lang: 0x44d, region: 0x35},
- 222: {lang: 0x44e, region: 0x9c},
- 226: {lang: 0x45a, region: 0xe8},
- 227: {lang: 0x11a, region: 0x9a},
- 228: {lang: 0x45e, region: 0x53},
- 229: {lang: 0x232, region: 0x53},
- 230: {lang: 0x450, region: 0x9a},
- 231: {lang: 0x4a5, region: 0x53},
- 232: {lang: 0x9f, region: 0x13f},
- 233: {lang: 0x461, region: 0x9a},
- 235: {lang: 0x528, region: 0xbb},
- 236: {lang: 0x153, region: 0xe8},
- 237: {lang: 0x128, region: 0xce},
- 238: {lang: 0x46b, region: 0x124},
- 239: {lang: 0xa9, region: 0x53},
- 240: {lang: 0x2ce, region: 0x9a},
- 243: {lang: 0x4ad, region: 0x11d},
- 244: {lang: 0x4be, region: 0xb5},
- 247: {lang: 0x1ce, region: 0x9a},
- 250: {lang: 0x3a9, region: 0x9d},
- 251: {lang: 0x22, region: 0x9c},
- 253: {lang: 0x1ea, region: 0x53},
- 254: {lang: 0xef, region: 0xc6},
-}
-
-type likelyScriptRegion struct {
- region uint16
- script uint16
- 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: 7980 bytes, 1330 elements
-var likelyLang = [1330]likelyScriptRegion{
- 0: {region: 0x136, script: 0x5b, flags: 0x0},
- 1: {region: 0x70, script: 0x5b, flags: 0x0},
- 2: {region: 0x166, script: 0x5b, flags: 0x0},
- 3: {region: 0x166, script: 0x5b, flags: 0x0},
- 4: {region: 0x166, script: 0x5b, flags: 0x0},
- 5: {region: 0x7e, script: 0x20, flags: 0x0},
- 6: {region: 0x166, script: 0x5b, flags: 0x0},
- 7: {region: 0x166, script: 0x20, flags: 0x0},
- 8: {region: 0x81, script: 0x5b, flags: 0x0},
- 9: {region: 0x166, script: 0x5b, flags: 0x0},
- 10: {region: 0x166, script: 0x5b, flags: 0x0},
- 11: {region: 0x166, script: 0x5b, flags: 0x0},
- 12: {region: 0x96, script: 0x5b, flags: 0x0},
- 13: {region: 0x132, script: 0x5b, flags: 0x0},
- 14: {region: 0x81, script: 0x5b, flags: 0x0},
- 15: {region: 0x166, script: 0x5b, flags: 0x0},
- 16: {region: 0x166, script: 0x5b, flags: 0x0},
- 17: {region: 0x107, script: 0x20, flags: 0x0},
- 18: {region: 0x166, script: 0x5b, flags: 0x0},
- 19: {region: 0x9d, script: 0x9, flags: 0x0},
- 20: {region: 0x129, script: 0x5, flags: 0x0},
- 21: {region: 0x166, script: 0x5b, flags: 0x0},
- 22: {region: 0x162, script: 0x5b, flags: 0x0},
- 23: {region: 0x166, script: 0x5b, flags: 0x0},
- 24: {region: 0x166, script: 0x5b, flags: 0x0},
- 25: {region: 0x166, script: 0x5b, flags: 0x0},
- 26: {region: 0x166, script: 0x5b, flags: 0x0},
- 27: {region: 0x166, script: 0x5b, flags: 0x0},
- 28: {region: 0x52, script: 0x5b, flags: 0x0},
- 29: {region: 0x166, script: 0x5b, flags: 0x0},
- 30: {region: 0x166, script: 0x5b, flags: 0x0},
- 31: {region: 0x9a, script: 0x4, flags: 0x0},
- 32: {region: 0x166, script: 0x5b, flags: 0x0},
- 33: {region: 0x81, script: 0x5b, flags: 0x0},
- 34: {region: 0x9c, script: 0xfb, flags: 0x0},
- 35: {region: 0x166, script: 0x5b, flags: 0x0},
- 36: {region: 0x166, script: 0x5b, flags: 0x0},
- 37: {region: 0x14e, script: 0x5b, flags: 0x0},
- 38: {region: 0x107, script: 0x20, flags: 0x0},
- 39: {region: 0x70, script: 0x2c, flags: 0x0},
- 40: {region: 0x166, script: 0x5b, flags: 0x0},
- 41: {region: 0x166, script: 0x5b, flags: 0x0},
- 42: {region: 0xd7, script: 0x5b, flags: 0x0},
- 43: {region: 0x166, script: 0x5b, flags: 0x0},
- 45: {region: 0x166, script: 0x5b, flags: 0x0},
- 46: {region: 0x166, script: 0x5b, flags: 0x0},
- 47: {region: 0x166, script: 0x5b, flags: 0x0},
- 48: {region: 0x166, script: 0x5b, flags: 0x0},
- 49: {region: 0x166, script: 0x5b, flags: 0x0},
- 50: {region: 0x166, script: 0x5b, flags: 0x0},
- 51: {region: 0x96, script: 0x5b, flags: 0x0},
- 52: {region: 0x166, script: 0x5, flags: 0x0},
- 53: {region: 0x123, script: 0x5, flags: 0x0},
- 54: {region: 0x166, script: 0x5b, flags: 0x0},
- 55: {region: 0x166, script: 0x5b, flags: 0x0},
- 56: {region: 0x166, script: 0x5b, flags: 0x0},
- 57: {region: 0x166, script: 0x5b, flags: 0x0},
- 58: {region: 0x6c, script: 0x5, flags: 0x0},
- 59: {region: 0x0, script: 0x3, flags: 0x1},
- 60: {region: 0x166, script: 0x5b, flags: 0x0},
- 61: {region: 0x51, script: 0x5b, flags: 0x0},
- 62: {region: 0x3f, script: 0x5b, flags: 0x0},
- 63: {region: 0x68, script: 0x5, flags: 0x0},
- 65: {region: 0xbb, script: 0x5, flags: 0x0},
- 66: {region: 0x6c, script: 0x5, flags: 0x0},
- 67: {region: 0x9a, script: 0xe, flags: 0x0},
- 68: {region: 0x130, script: 0x5b, flags: 0x0},
- 69: {region: 0x136, script: 0xd0, flags: 0x0},
- 70: {region: 0x166, script: 0x5b, flags: 0x0},
- 71: {region: 0x166, script: 0x5b, flags: 0x0},
- 72: {region: 0x6f, script: 0x5b, flags: 0x0},
- 73: {region: 0x166, script: 0x5b, flags: 0x0},
- 74: {region: 0x166, script: 0x5b, flags: 0x0},
- 75: {region: 0x49, script: 0x5b, flags: 0x0},
- 76: {region: 0x166, script: 0x5b, flags: 0x0},
- 77: {region: 0x107, script: 0x20, flags: 0x0},
- 78: {region: 0x166, script: 0x5, flags: 0x0},
- 79: {region: 0x166, script: 0x5b, flags: 0x0},
- 80: {region: 0x166, script: 0x5b, flags: 0x0},
- 81: {region: 0x166, script: 0x5b, flags: 0x0},
- 82: {region: 0x9a, script: 0x22, flags: 0x0},
- 83: {region: 0x166, script: 0x5b, flags: 0x0},
- 84: {region: 0x166, script: 0x5b, flags: 0x0},
- 85: {region: 0x166, script: 0x5b, flags: 0x0},
- 86: {region: 0x3f, script: 0x5b, flags: 0x0},
- 87: {region: 0x166, script: 0x5b, flags: 0x0},
- 88: {region: 0x3, script: 0x5, flags: 0x1},
- 89: {region: 0x107, script: 0x20, flags: 0x0},
- 90: {region: 0xe9, script: 0x5, flags: 0x0},
- 91: {region: 0x96, script: 0x5b, flags: 0x0},
- 92: {region: 0xdc, script: 0x22, flags: 0x0},
- 93: {region: 0x2e, script: 0x5b, flags: 0x0},
- 94: {region: 0x52, script: 0x5b, flags: 0x0},
- 95: {region: 0x166, script: 0x5b, flags: 0x0},
- 96: {region: 0x52, script: 0xb, flags: 0x0},
- 97: {region: 0x166, script: 0x5b, flags: 0x0},
- 98: {region: 0x166, script: 0x5b, flags: 0x0},
- 99: {region: 0x96, script: 0x5b, flags: 0x0},
- 100: {region: 0x166, script: 0x5b, flags: 0x0},
- 101: {region: 0x52, script: 0x5b, flags: 0x0},
- 102: {region: 0x166, script: 0x5b, flags: 0x0},
- 103: {region: 0x166, script: 0x5b, flags: 0x0},
- 104: {region: 0x166, script: 0x5b, flags: 0x0},
- 105: {region: 0x166, script: 0x5b, flags: 0x0},
- 106: {region: 0x4f, script: 0x5b, flags: 0x0},
- 107: {region: 0x166, script: 0x5b, flags: 0x0},
- 108: {region: 0x166, script: 0x5b, flags: 0x0},
- 109: {region: 0x166, script: 0x5b, flags: 0x0},
- 110: {region: 0x166, script: 0x2c, flags: 0x0},
- 111: {region: 0x166, script: 0x5b, flags: 0x0},
- 112: {region: 0x166, script: 0x5b, flags: 0x0},
- 113: {region: 0x47, script: 0x20, flags: 0x0},
- 114: {region: 0x166, script: 0x5b, flags: 0x0},
- 115: {region: 0x166, script: 0x5b, flags: 0x0},
- 116: {region: 0x10c, script: 0x5, flags: 0x0},
- 117: {region: 0x163, script: 0x5b, flags: 0x0},
- 118: {region: 0x166, script: 0x5b, flags: 0x0},
- 119: {region: 0x96, script: 0x5b, flags: 0x0},
- 120: {region: 0x166, script: 0x5b, flags: 0x0},
- 121: {region: 0x130, script: 0x5b, flags: 0x0},
- 122: {region: 0x52, script: 0x5b, flags: 0x0},
- 123: {region: 0x9a, script: 0xe6, flags: 0x0},
- 124: {region: 0xe9, script: 0x5, flags: 0x0},
- 125: {region: 0x9a, script: 0x22, flags: 0x0},
- 126: {region: 0x38, script: 0x20, flags: 0x0},
- 127: {region: 0x9a, script: 0x22, flags: 0x0},
- 128: {region: 0xe9, script: 0x5, flags: 0x0},
- 129: {region: 0x12c, script: 0x34, flags: 0x0},
- 131: {region: 0x9a, script: 0x22, flags: 0x0},
- 132: {region: 0x166, script: 0x5b, flags: 0x0},
- 133: {region: 0x9a, script: 0x22, flags: 0x0},
- 134: {region: 0xe8, script: 0x5b, flags: 0x0},
- 135: {region: 0x166, script: 0x5b, flags: 0x0},
- 136: {region: 0x9a, script: 0x22, flags: 0x0},
- 137: {region: 0x166, script: 0x5b, flags: 0x0},
- 138: {region: 0x140, script: 0x5b, flags: 0x0},
- 139: {region: 0x166, script: 0x5b, flags: 0x0},
- 140: {region: 0x166, script: 0x5b, flags: 0x0},
- 141: {region: 0xe8, script: 0x5b, flags: 0x0},
- 142: {region: 0x166, script: 0x5b, flags: 0x0},
- 143: {region: 0xd7, script: 0x5b, flags: 0x0},
- 144: {region: 0x166, script: 0x5b, flags: 0x0},
- 145: {region: 0x166, script: 0x5b, flags: 0x0},
- 146: {region: 0x166, script: 0x5b, flags: 0x0},
- 147: {region: 0x166, script: 0x2c, flags: 0x0},
- 148: {region: 0x9a, script: 0x22, flags: 0x0},
- 149: {region: 0x96, script: 0x5b, flags: 0x0},
- 150: {region: 0x166, script: 0x5b, flags: 0x0},
- 151: {region: 0x166, script: 0x5b, flags: 0x0},
- 152: {region: 0x115, script: 0x5b, flags: 0x0},
- 153: {region: 0x166, script: 0x5b, flags: 0x0},
- 154: {region: 0x166, script: 0x5b, flags: 0x0},
- 155: {region: 0x52, script: 0x5b, flags: 0x0},
- 156: {region: 0x166, script: 0x5b, flags: 0x0},
- 157: {region: 0xe8, script: 0x5b, flags: 0x0},
- 158: {region: 0x166, script: 0x5b, flags: 0x0},
- 159: {region: 0x13f, script: 0xe8, flags: 0x0},
- 160: {region: 0xc4, script: 0x5b, flags: 0x0},
- 161: {region: 0x166, script: 0x5b, flags: 0x0},
- 162: {region: 0x166, script: 0x5b, flags: 0x0},
- 163: {region: 0xc4, script: 0x5b, flags: 0x0},
- 164: {region: 0x166, script: 0x5b, flags: 0x0},
- 165: {region: 0x35, script: 0xe, flags: 0x0},
- 166: {region: 0x166, script: 0x5b, flags: 0x0},
- 167: {region: 0x166, script: 0x5b, flags: 0x0},
- 168: {region: 0x166, script: 0x5b, flags: 0x0},
- 169: {region: 0x53, script: 0xef, flags: 0x0},
- 170: {region: 0x166, script: 0x5b, flags: 0x0},
- 171: {region: 0x166, script: 0x5b, flags: 0x0},
- 172: {region: 0x166, script: 0x5b, flags: 0x0},
- 173: {region: 0x9a, script: 0xe, flags: 0x0},
- 174: {region: 0x166, script: 0x5b, flags: 0x0},
- 175: {region: 0x9d, script: 0x5, flags: 0x0},
- 176: {region: 0x166, script: 0x5b, flags: 0x0},
- 177: {region: 0x4f, script: 0x5b, flags: 0x0},
- 178: {region: 0x79, script: 0x5b, flags: 0x0},
- 179: {region: 0x9a, script: 0x22, flags: 0x0},
- 180: {region: 0xe9, script: 0x5, flags: 0x0},
- 181: {region: 0x9a, script: 0x22, flags: 0x0},
- 182: {region: 0x166, script: 0x5b, flags: 0x0},
- 183: {region: 0x33, script: 0x5b, flags: 0x0},
- 184: {region: 0x166, script: 0x5b, flags: 0x0},
- 185: {region: 0xb5, script: 0xc, flags: 0x0},
- 186: {region: 0x52, script: 0x5b, flags: 0x0},
- 187: {region: 0x166, script: 0x2c, flags: 0x0},
- 188: {region: 0xe8, script: 0x5b, flags: 0x0},
- 189: {region: 0x166, script: 0x5b, flags: 0x0},
- 190: {region: 0xe9, script: 0x22, flags: 0x0},
- 191: {region: 0x107, script: 0x20, flags: 0x0},
- 192: {region: 0x160, script: 0x5b, flags: 0x0},
- 193: {region: 0x166, script: 0x5b, flags: 0x0},
- 194: {region: 0x96, script: 0x5b, flags: 0x0},
- 195: {region: 0x166, script: 0x5b, flags: 0x0},
- 196: {region: 0x52, script: 0x5b, flags: 0x0},
- 197: {region: 0x166, script: 0x5b, flags: 0x0},
- 198: {region: 0x166, script: 0x5b, flags: 0x0},
- 199: {region: 0x166, script: 0x5b, flags: 0x0},
- 200: {region: 0x87, script: 0x5b, flags: 0x0},
- 201: {region: 0x166, script: 0x5b, flags: 0x0},
- 202: {region: 0x166, script: 0x5b, flags: 0x0},
- 203: {region: 0x166, script: 0x5b, flags: 0x0},
- 204: {region: 0x166, script: 0x5b, flags: 0x0},
- 205: {region: 0x6e, script: 0x2c, flags: 0x0},
- 206: {region: 0x166, script: 0x5b, flags: 0x0},
- 207: {region: 0x166, script: 0x5b, flags: 0x0},
- 208: {region: 0x52, script: 0x5b, flags: 0x0},
- 209: {region: 0x166, script: 0x5b, flags: 0x0},
- 210: {region: 0x166, script: 0x5b, flags: 0x0},
- 211: {region: 0xc4, script: 0x5b, flags: 0x0},
- 212: {region: 0x166, script: 0x5b, flags: 0x0},
- 213: {region: 0x166, script: 0x5b, flags: 0x0},
- 214: {region: 0x166, script: 0x5b, flags: 0x0},
- 215: {region: 0x6f, script: 0x5b, flags: 0x0},
- 216: {region: 0x166, script: 0x5b, flags: 0x0},
- 217: {region: 0x166, script: 0x5b, flags: 0x0},
- 218: {region: 0xd7, script: 0x5b, flags: 0x0},
- 219: {region: 0x35, script: 0x16, flags: 0x0},
- 220: {region: 0x107, script: 0x20, flags: 0x0},
- 221: {region: 0xe8, script: 0x5b, flags: 0x0},
- 222: {region: 0x166, script: 0x5b, flags: 0x0},
- 223: {region: 0x132, script: 0x5b, flags: 0x0},
- 224: {region: 0x8b, script: 0x5b, flags: 0x0},
- 225: {region: 0x76, script: 0x5b, flags: 0x0},
- 226: {region: 0x107, script: 0x20, flags: 0x0},
- 227: {region: 0x136, script: 0x5b, flags: 0x0},
- 228: {region: 0x49, script: 0x5b, flags: 0x0},
- 229: {region: 0x136, script: 0x1a, flags: 0x0},
- 230: {region: 0xa7, script: 0x5, flags: 0x0},
- 231: {region: 0x13f, script: 0x19, flags: 0x0},
- 232: {region: 0x166, script: 0x5b, flags: 0x0},
- 233: {region: 0x9c, script: 0x5, flags: 0x0},
- 234: {region: 0x166, script: 0x5b, flags: 0x0},
- 235: {region: 0x166, script: 0x5b, flags: 0x0},
- 236: {region: 0x166, script: 0x5b, flags: 0x0},
- 237: {region: 0x166, script: 0x5b, flags: 0x0},
- 238: {region: 0x166, script: 0x5b, flags: 0x0},
- 239: {region: 0xc6, script: 0xda, flags: 0x0},
- 240: {region: 0x79, script: 0x5b, flags: 0x0},
- 241: {region: 0x6c, script: 0x1d, flags: 0x0},
- 242: {region: 0xe8, script: 0x5b, flags: 0x0},
- 243: {region: 0x49, script: 0x17, flags: 0x0},
- 244: {region: 0x131, script: 0x20, flags: 0x0},
- 245: {region: 0x49, script: 0x17, flags: 0x0},
- 246: {region: 0x49, script: 0x17, flags: 0x0},
- 247: {region: 0x49, script: 0x17, flags: 0x0},
- 248: {region: 0x49, script: 0x17, flags: 0x0},
- 249: {region: 0x10b, script: 0x5b, flags: 0x0},
- 250: {region: 0x5f, script: 0x5b, flags: 0x0},
- 251: {region: 0xea, script: 0x5b, flags: 0x0},
- 252: {region: 0x49, script: 0x17, flags: 0x0},
- 253: {region: 0xc5, script: 0x88, flags: 0x0},
- 254: {region: 0x8, script: 0x2, flags: 0x1},
- 255: {region: 0x107, script: 0x20, flags: 0x0},
- 256: {region: 0x7c, script: 0x5b, flags: 0x0},
- 257: {region: 0x64, script: 0x5b, flags: 0x0},
- 258: {region: 0x166, script: 0x5b, flags: 0x0},
- 259: {region: 0x166, script: 0x5b, flags: 0x0},
- 260: {region: 0x166, script: 0x5b, flags: 0x0},
- 261: {region: 0x166, script: 0x5b, flags: 0x0},
- 262: {region: 0x136, script: 0x5b, flags: 0x0},
- 263: {region: 0x107, script: 0x20, flags: 0x0},
- 264: {region: 0xa5, script: 0x5b, flags: 0x0},
- 265: {region: 0x166, script: 0x5b, flags: 0x0},
- 266: {region: 0x166, script: 0x5b, flags: 0x0},
- 267: {region: 0x9a, script: 0x5, flags: 0x0},
- 268: {region: 0x166, script: 0x5b, flags: 0x0},
- 269: {region: 0x61, script: 0x5b, flags: 0x0},
- 270: {region: 0x166, script: 0x5b, flags: 0x0},
- 271: {region: 0x49, script: 0x5b, flags: 0x0},
- 272: {region: 0x166, script: 0x5b, flags: 0x0},
- 273: {region: 0x166, script: 0x5b, flags: 0x0},
- 274: {region: 0x166, script: 0x5b, flags: 0x0},
- 275: {region: 0x166, script: 0x5, flags: 0x0},
- 276: {region: 0x49, script: 0x5b, flags: 0x0},
- 277: {region: 0x166, script: 0x5b, flags: 0x0},
- 278: {region: 0x166, script: 0x5b, flags: 0x0},
- 279: {region: 0xd5, script: 0x5b, flags: 0x0},
- 280: {region: 0x4f, script: 0x5b, flags: 0x0},
- 281: {region: 0x166, script: 0x5b, flags: 0x0},
- 282: {region: 0x9a, script: 0x5, flags: 0x0},
- 283: {region: 0x166, script: 0x5b, flags: 0x0},
- 284: {region: 0x166, script: 0x5b, flags: 0x0},
- 285: {region: 0x166, script: 0x5b, flags: 0x0},
- 286: {region: 0x166, script: 0x2c, flags: 0x0},
- 287: {region: 0x61, script: 0x5b, flags: 0x0},
- 288: {region: 0xc4, script: 0x5b, flags: 0x0},
- 289: {region: 0xd1, script: 0x5b, flags: 0x0},
- 290: {region: 0x166, script: 0x5b, flags: 0x0},
- 291: {region: 0xdc, script: 0x22, flags: 0x0},
- 292: {region: 0x52, script: 0x5b, flags: 0x0},
- 293: {region: 0x166, script: 0x5b, flags: 0x0},
- 294: {region: 0x166, script: 0x5b, flags: 0x0},
- 295: {region: 0x166, script: 0x5b, flags: 0x0},
- 296: {region: 0xce, script: 0xed, flags: 0x0},
- 297: {region: 0x166, script: 0x5b, flags: 0x0},
- 298: {region: 0x166, script: 0x5b, flags: 0x0},
- 299: {region: 0x115, script: 0x5b, flags: 0x0},
- 300: {region: 0x37, script: 0x5b, flags: 0x0},
- 301: {region: 0x43, script: 0xef, flags: 0x0},
- 302: {region: 0x166, script: 0x5b, flags: 0x0},
- 303: {region: 0xa5, script: 0x5b, flags: 0x0},
- 304: {region: 0x81, script: 0x5b, flags: 0x0},
- 305: {region: 0xd7, script: 0x5b, flags: 0x0},
- 306: {region: 0x9f, script: 0x5b, flags: 0x0},
- 307: {region: 0x6c, script: 0x29, flags: 0x0},
- 308: {region: 0x166, script: 0x5b, flags: 0x0},
- 309: {region: 0xc5, script: 0x4b, flags: 0x0},
- 310: {region: 0x88, script: 0x34, flags: 0x0},
- 311: {region: 0x166, script: 0x5b, flags: 0x0},
- 312: {region: 0x166, script: 0x5b, flags: 0x0},
- 313: {region: 0xa, script: 0x2, flags: 0x1},
- 314: {region: 0x166, script: 0x5b, flags: 0x0},
- 315: {region: 0x166, script: 0x5b, flags: 0x0},
- 316: {region: 0x1, script: 0x5b, flags: 0x0},
- 317: {region: 0x166, script: 0x5b, flags: 0x0},
- 318: {region: 0x6f, script: 0x5b, flags: 0x0},
- 319: {region: 0x136, script: 0x5b, flags: 0x0},
- 320: {region: 0x6b, script: 0x5b, flags: 0x0},
- 321: {region: 0x166, script: 0x5b, flags: 0x0},
- 322: {region: 0x9f, script: 0x46, flags: 0x0},
- 323: {region: 0x166, script: 0x5b, flags: 0x0},
- 324: {region: 0x166, script: 0x5b, flags: 0x0},
- 325: {region: 0x6f, script: 0x5b, flags: 0x0},
- 326: {region: 0x52, script: 0x5b, flags: 0x0},
- 327: {region: 0x6f, script: 0x5b, flags: 0x0},
- 328: {region: 0x9d, script: 0x5, flags: 0x0},
- 329: {region: 0x166, script: 0x5b, flags: 0x0},
- 330: {region: 0x166, script: 0x5b, flags: 0x0},
- 331: {region: 0x166, script: 0x5b, flags: 0x0},
- 332: {region: 0x166, script: 0x5b, flags: 0x0},
- 333: {region: 0x87, script: 0x5b, flags: 0x0},
- 334: {region: 0xc, script: 0x2, flags: 0x1},
- 335: {region: 0x166, script: 0x5b, flags: 0x0},
- 336: {region: 0xc4, script: 0x5b, flags: 0x0},
- 337: {region: 0x73, script: 0x5b, flags: 0x0},
- 338: {region: 0x10c, script: 0x5, flags: 0x0},
- 339: {region: 0xe8, script: 0x5b, flags: 0x0},
- 340: {region: 0x10d, script: 0x5b, flags: 0x0},
- 341: {region: 0x74, script: 0x5b, flags: 0x0},
- 342: {region: 0x166, script: 0x5b, flags: 0x0},
- 343: {region: 0x166, script: 0x5b, flags: 0x0},
- 344: {region: 0x77, script: 0x5b, flags: 0x0},
- 345: {region: 0x166, script: 0x5b, flags: 0x0},
- 346: {region: 0x3b, script: 0x5b, flags: 0x0},
- 347: {region: 0x166, script: 0x5b, flags: 0x0},
- 348: {region: 0x166, script: 0x5b, flags: 0x0},
- 349: {region: 0x166, script: 0x5b, flags: 0x0},
- 350: {region: 0x79, script: 0x5b, flags: 0x0},
- 351: {region: 0x136, script: 0x5b, flags: 0x0},
- 352: {region: 0x79, script: 0x5b, flags: 0x0},
- 353: {region: 0x61, script: 0x5b, flags: 0x0},
- 354: {region: 0x61, script: 0x5b, flags: 0x0},
- 355: {region: 0x52, script: 0x5, flags: 0x0},
- 356: {region: 0x141, script: 0x5b, flags: 0x0},
- 357: {region: 0x166, script: 0x5b, flags: 0x0},
- 358: {region: 0x85, script: 0x5b, flags: 0x0},
- 359: {region: 0x166, script: 0x5b, flags: 0x0},
- 360: {region: 0xd5, script: 0x5b, flags: 0x0},
- 361: {region: 0x9f, script: 0x5b, flags: 0x0},
- 362: {region: 0xd7, script: 0x5b, flags: 0x0},
- 363: {region: 0x166, script: 0x5b, flags: 0x0},
- 364: {region: 0x10c, script: 0x5b, flags: 0x0},
- 365: {region: 0xda, script: 0x5b, flags: 0x0},
- 366: {region: 0x97, script: 0x5b, flags: 0x0},
- 367: {region: 0x81, script: 0x5b, flags: 0x0},
- 368: {region: 0x166, script: 0x5b, flags: 0x0},
- 369: {region: 0xbd, script: 0x5b, flags: 0x0},
- 370: {region: 0x166, script: 0x5b, flags: 0x0},
- 371: {region: 0x166, script: 0x5b, flags: 0x0},
- 372: {region: 0x166, script: 0x5b, flags: 0x0},
- 373: {region: 0x53, script: 0x3b, flags: 0x0},
- 374: {region: 0x166, script: 0x5b, flags: 0x0},
- 375: {region: 0x96, script: 0x5b, flags: 0x0},
- 376: {region: 0x166, script: 0x5b, flags: 0x0},
- 377: {region: 0x166, script: 0x5b, flags: 0x0},
- 378: {region: 0x9a, script: 0x22, flags: 0x0},
- 379: {region: 0x166, script: 0x5b, flags: 0x0},
- 380: {region: 0x9d, script: 0x5, flags: 0x0},
- 381: {region: 0x7f, script: 0x5b, flags: 0x0},
- 382: {region: 0x7c, script: 0x5b, flags: 0x0},
- 383: {region: 0x166, script: 0x5b, flags: 0x0},
- 384: {region: 0x166, script: 0x5b, flags: 0x0},
- 385: {region: 0x166, script: 0x5b, flags: 0x0},
- 386: {region: 0x166, script: 0x5b, flags: 0x0},
- 387: {region: 0x166, script: 0x5b, flags: 0x0},
- 388: {region: 0x166, script: 0x5b, flags: 0x0},
- 389: {region: 0x70, script: 0x2c, flags: 0x0},
- 390: {region: 0x166, script: 0x5b, flags: 0x0},
- 391: {region: 0xdc, script: 0x22, flags: 0x0},
- 392: {region: 0x166, script: 0x5b, flags: 0x0},
- 393: {region: 0xa8, script: 0x5b, flags: 0x0},
- 394: {region: 0x166, script: 0x5b, flags: 0x0},
- 395: {region: 0xe9, script: 0x5, flags: 0x0},
- 396: {region: 0x166, script: 0x5b, flags: 0x0},
- 397: {region: 0xe9, script: 0x5, flags: 0x0},
- 398: {region: 0x166, script: 0x5b, flags: 0x0},
- 399: {region: 0x166, script: 0x5b, flags: 0x0},
- 400: {region: 0x6f, script: 0x5b, flags: 0x0},
- 401: {region: 0x9d, script: 0x5, flags: 0x0},
- 402: {region: 0x166, script: 0x5b, flags: 0x0},
- 403: {region: 0x166, script: 0x2c, flags: 0x0},
- 404: {region: 0xf2, script: 0x5b, flags: 0x0},
- 405: {region: 0x166, script: 0x5b, flags: 0x0},
- 406: {region: 0x166, script: 0x5b, flags: 0x0},
- 407: {region: 0x166, script: 0x5b, flags: 0x0},
- 408: {region: 0x166, script: 0x2c, flags: 0x0},
- 409: {region: 0x166, script: 0x5b, flags: 0x0},
- 410: {region: 0x9a, script: 0x22, flags: 0x0},
- 411: {region: 0x9a, script: 0xe9, flags: 0x0},
- 412: {region: 0x96, script: 0x5b, flags: 0x0},
- 413: {region: 0xda, script: 0x5b, flags: 0x0},
- 414: {region: 0x131, script: 0x32, flags: 0x0},
- 415: {region: 0x166, script: 0x5b, flags: 0x0},
- 416: {region: 0xe, script: 0x2, flags: 0x1},
- 417: {region: 0x9a, script: 0xe, flags: 0x0},
- 418: {region: 0x166, script: 0x5b, flags: 0x0},
- 419: {region: 0x4e, script: 0x5b, flags: 0x0},
- 420: {region: 0x9a, script: 0x35, flags: 0x0},
- 421: {region: 0x41, script: 0x5b, flags: 0x0},
- 422: {region: 0x54, script: 0x5b, flags: 0x0},
- 423: {region: 0x166, script: 0x5b, flags: 0x0},
- 424: {region: 0x81, script: 0x5b, flags: 0x0},
- 425: {region: 0x166, script: 0x5b, flags: 0x0},
- 426: {region: 0x166, script: 0x5b, flags: 0x0},
- 427: {region: 0xa5, script: 0x5b, flags: 0x0},
- 428: {region: 0x99, script: 0x5b, flags: 0x0},
- 429: {region: 0x166, script: 0x5b, flags: 0x0},
- 430: {region: 0xdc, script: 0x22, flags: 0x0},
- 431: {region: 0x166, script: 0x5b, flags: 0x0},
- 432: {region: 0x166, script: 0x5, flags: 0x0},
- 433: {region: 0x49, script: 0x5b, flags: 0x0},
- 434: {region: 0x166, script: 0x5, flags: 0x0},
- 435: {region: 0x166, script: 0x5b, flags: 0x0},
- 436: {region: 0x10, script: 0x3, flags: 0x1},
- 437: {region: 0x166, script: 0x5b, flags: 0x0},
- 438: {region: 0x53, script: 0x3b, flags: 0x0},
- 439: {region: 0x166, script: 0x5b, flags: 0x0},
- 440: {region: 0x136, script: 0x5b, flags: 0x0},
- 441: {region: 0x24, script: 0x5, flags: 0x0},
- 442: {region: 0x166, script: 0x5b, flags: 0x0},
- 443: {region: 0x166, script: 0x2c, flags: 0x0},
- 444: {region: 0x98, script: 0x3e, flags: 0x0},
- 445: {region: 0x166, script: 0x5b, flags: 0x0},
- 446: {region: 0x9a, script: 0x22, flags: 0x0},
- 447: {region: 0x166, script: 0x5b, flags: 0x0},
- 448: {region: 0x74, script: 0x5b, flags: 0x0},
- 449: {region: 0x166, script: 0x5b, flags: 0x0},
- 450: {region: 0x166, script: 0x5b, flags: 0x0},
- 451: {region: 0xe8, script: 0x5b, flags: 0x0},
- 452: {region: 0x166, script: 0x5b, flags: 0x0},
- 453: {region: 0x12c, script: 0x40, flags: 0x0},
- 454: {region: 0x53, script: 0x92, flags: 0x0},
- 455: {region: 0x166, script: 0x5b, flags: 0x0},
- 456: {region: 0xe9, script: 0x5, flags: 0x0},
- 457: {region: 0x9a, script: 0x22, flags: 0x0},
- 458: {region: 0xb0, script: 0x41, flags: 0x0},
- 459: {region: 0xe8, script: 0x5b, flags: 0x0},
- 460: {region: 0xe9, script: 0x5, flags: 0x0},
- 461: {region: 0xe7, script: 0x5b, flags: 0x0},
- 462: {region: 0x9a, script: 0x22, flags: 0x0},
- 463: {region: 0x9a, script: 0x22, flags: 0x0},
- 464: {region: 0x166, script: 0x5b, flags: 0x0},
- 465: {region: 0x91, script: 0x5b, flags: 0x0},
- 466: {region: 0x61, script: 0x5b, flags: 0x0},
- 467: {region: 0x53, script: 0x3b, flags: 0x0},
- 468: {region: 0x92, script: 0x5b, flags: 0x0},
- 469: {region: 0x93, script: 0x5b, flags: 0x0},
- 470: {region: 0x166, script: 0x5b, flags: 0x0},
- 471: {region: 0x28, script: 0x8, flags: 0x0},
- 472: {region: 0xd3, script: 0x5b, flags: 0x0},
- 473: {region: 0x79, script: 0x5b, flags: 0x0},
- 474: {region: 0x166, script: 0x5b, flags: 0x0},
- 475: {region: 0x166, script: 0x5b, flags: 0x0},
- 476: {region: 0xd1, script: 0x5b, flags: 0x0},
- 477: {region: 0xd7, script: 0x5b, flags: 0x0},
- 478: {region: 0x166, script: 0x5b, flags: 0x0},
- 479: {region: 0x166, script: 0x5b, flags: 0x0},
- 480: {region: 0x166, script: 0x5b, flags: 0x0},
- 481: {region: 0x96, script: 0x5b, flags: 0x0},
- 482: {region: 0x166, script: 0x5b, flags: 0x0},
- 483: {region: 0x166, script: 0x5b, flags: 0x0},
- 484: {region: 0x166, script: 0x5b, flags: 0x0},
- 486: {region: 0x123, script: 0x5b, flags: 0x0},
- 487: {region: 0xd7, script: 0x5b, flags: 0x0},
- 488: {region: 0x166, script: 0x5b, flags: 0x0},
- 489: {region: 0x166, script: 0x5b, flags: 0x0},
- 490: {region: 0x53, script: 0xfd, flags: 0x0},
- 491: {region: 0x166, script: 0x5b, flags: 0x0},
- 492: {region: 0x136, script: 0x5b, flags: 0x0},
- 493: {region: 0x166, script: 0x5b, flags: 0x0},
- 494: {region: 0x49, script: 0x5b, flags: 0x0},
- 495: {region: 0x166, script: 0x5b, flags: 0x0},
- 496: {region: 0x166, script: 0x5b, flags: 0x0},
- 497: {region: 0xe8, script: 0x5b, flags: 0x0},
- 498: {region: 0x166, script: 0x5b, flags: 0x0},
- 499: {region: 0x96, script: 0x5b, flags: 0x0},
- 500: {region: 0x107, script: 0x20, flags: 0x0},
- 501: {region: 0x1, script: 0x5b, flags: 0x0},
- 502: {region: 0x166, script: 0x5b, flags: 0x0},
- 503: {region: 0x166, script: 0x5b, flags: 0x0},
- 504: {region: 0x9e, script: 0x5b, flags: 0x0},
- 505: {region: 0x9f, script: 0x5b, flags: 0x0},
- 506: {region: 0x49, script: 0x17, flags: 0x0},
- 507: {region: 0x98, script: 0x3e, flags: 0x0},
- 508: {region: 0x166, script: 0x5b, flags: 0x0},
- 509: {region: 0x166, script: 0x5b, flags: 0x0},
- 510: {region: 0x107, script: 0x5b, flags: 0x0},
- 511: {region: 0x166, script: 0x5b, flags: 0x0},
- 512: {region: 0xa3, script: 0x49, flags: 0x0},
- 513: {region: 0x166, script: 0x5b, flags: 0x0},
- 514: {region: 0xa1, script: 0x5b, flags: 0x0},
- 515: {region: 0x1, script: 0x5b, flags: 0x0},
- 516: {region: 0x166, script: 0x5b, flags: 0x0},
- 517: {region: 0x166, script: 0x5b, flags: 0x0},
- 518: {region: 0x166, script: 0x5b, flags: 0x0},
- 519: {region: 0x52, script: 0x5b, flags: 0x0},
- 520: {region: 0x131, script: 0x3e, flags: 0x0},
- 521: {region: 0x166, script: 0x5b, flags: 0x0},
- 522: {region: 0x130, script: 0x5b, flags: 0x0},
- 523: {region: 0xdc, script: 0x22, flags: 0x0},
- 524: {region: 0x166, script: 0x5b, flags: 0x0},
- 525: {region: 0x64, script: 0x5b, flags: 0x0},
- 526: {region: 0x96, script: 0x5b, flags: 0x0},
- 527: {region: 0x96, script: 0x5b, flags: 0x0},
- 528: {region: 0x7e, script: 0x2e, flags: 0x0},
- 529: {region: 0x138, script: 0x20, flags: 0x0},
- 530: {region: 0x68, script: 0x5b, flags: 0x0},
- 531: {region: 0xc5, script: 0x5b, flags: 0x0},
- 532: {region: 0x166, script: 0x5b, flags: 0x0},
- 533: {region: 0x166, script: 0x5b, flags: 0x0},
- 534: {region: 0xd7, script: 0x5b, flags: 0x0},
- 535: {region: 0xa5, script: 0x5b, flags: 0x0},
- 536: {region: 0xc4, script: 0x5b, flags: 0x0},
- 537: {region: 0x107, script: 0x20, flags: 0x0},
- 538: {region: 0x166, script: 0x5b, flags: 0x0},
- 539: {region: 0x166, script: 0x5b, flags: 0x0},
- 540: {region: 0x166, script: 0x5b, flags: 0x0},
- 541: {region: 0x166, script: 0x5b, flags: 0x0},
- 542: {region: 0xd5, script: 0x5, flags: 0x0},
- 543: {region: 0xd7, script: 0x5b, flags: 0x0},
- 544: {region: 0x165, script: 0x5b, flags: 0x0},
- 545: {region: 0x166, script: 0x5b, flags: 0x0},
- 546: {region: 0x166, script: 0x5b, flags: 0x0},
- 547: {region: 0x130, script: 0x5b, flags: 0x0},
- 548: {region: 0x123, script: 0x5, flags: 0x0},
- 549: {region: 0x166, script: 0x5b, flags: 0x0},
- 550: {region: 0x124, script: 0xee, flags: 0x0},
- 551: {region: 0x5b, script: 0x5b, flags: 0x0},
- 552: {region: 0x52, script: 0x5b, flags: 0x0},
- 553: {region: 0x166, script: 0x5b, flags: 0x0},
- 554: {region: 0x4f, script: 0x5b, flags: 0x0},
- 555: {region: 0x9a, script: 0x22, flags: 0x0},
- 556: {region: 0x9a, script: 0x22, flags: 0x0},
- 557: {region: 0x4b, script: 0x5b, flags: 0x0},
- 558: {region: 0x96, script: 0x5b, flags: 0x0},
- 559: {region: 0x166, script: 0x5b, flags: 0x0},
- 560: {region: 0x41, script: 0x5b, flags: 0x0},
- 561: {region: 0x9a, script: 0x5b, flags: 0x0},
- 562: {region: 0x53, script: 0xe5, flags: 0x0},
- 563: {region: 0x9a, script: 0x22, flags: 0x0},
- 564: {region: 0xc4, script: 0x5b, flags: 0x0},
- 565: {region: 0x166, script: 0x5b, flags: 0x0},
- 566: {region: 0x9a, script: 0x76, flags: 0x0},
- 567: {region: 0xe9, script: 0x5, flags: 0x0},
- 568: {region: 0x166, script: 0x5b, flags: 0x0},
- 569: {region: 0xa5, script: 0x5b, flags: 0x0},
- 570: {region: 0x166, script: 0x5b, flags: 0x0},
- 571: {region: 0x12c, script: 0x5b, flags: 0x0},
- 572: {region: 0x166, script: 0x5b, flags: 0x0},
- 573: {region: 0xd3, script: 0x5b, flags: 0x0},
- 574: {region: 0x166, script: 0x5b, flags: 0x0},
- 575: {region: 0xb0, script: 0x58, flags: 0x0},
- 576: {region: 0x166, script: 0x5b, flags: 0x0},
- 577: {region: 0x166, script: 0x5b, flags: 0x0},
- 578: {region: 0x13, script: 0x6, flags: 0x1},
- 579: {region: 0x166, script: 0x5b, flags: 0x0},
- 580: {region: 0x52, script: 0x5b, flags: 0x0},
- 581: {region: 0x83, script: 0x5b, flags: 0x0},
- 582: {region: 0xa5, script: 0x5b, flags: 0x0},
- 583: {region: 0x166, script: 0x5b, flags: 0x0},
- 584: {region: 0x166, script: 0x5b, flags: 0x0},
- 585: {region: 0x166, script: 0x5b, flags: 0x0},
- 586: {region: 0xa7, script: 0x4f, flags: 0x0},
- 587: {region: 0x2a, script: 0x5b, flags: 0x0},
- 588: {region: 0x166, script: 0x5b, flags: 0x0},
- 589: {region: 0x166, script: 0x5b, flags: 0x0},
- 590: {region: 0x166, script: 0x5b, flags: 0x0},
- 591: {region: 0x166, script: 0x5b, flags: 0x0},
- 592: {region: 0x166, script: 0x5b, flags: 0x0},
- 593: {region: 0x9a, script: 0x53, flags: 0x0},
- 594: {region: 0x8c, script: 0x5b, flags: 0x0},
- 595: {region: 0x166, script: 0x5b, flags: 0x0},
- 596: {region: 0xac, script: 0x54, flags: 0x0},
- 597: {region: 0x107, script: 0x20, flags: 0x0},
- 598: {region: 0x9a, script: 0x22, flags: 0x0},
- 599: {region: 0x166, script: 0x5b, flags: 0x0},
- 600: {region: 0x76, script: 0x5b, flags: 0x0},
- 601: {region: 0x166, script: 0x5b, flags: 0x0},
- 602: {region: 0xb5, script: 0x5b, flags: 0x0},
- 603: {region: 0x166, script: 0x5b, flags: 0x0},
- 604: {region: 0x166, script: 0x5b, flags: 0x0},
- 605: {region: 0x166, script: 0x5b, flags: 0x0},
- 606: {region: 0x166, script: 0x5b, flags: 0x0},
- 607: {region: 0x166, script: 0x5b, flags: 0x0},
- 608: {region: 0x166, script: 0x5b, flags: 0x0},
- 609: {region: 0x166, script: 0x5b, flags: 0x0},
- 610: {region: 0x166, script: 0x2c, flags: 0x0},
- 611: {region: 0x166, script: 0x5b, flags: 0x0},
- 612: {region: 0x107, script: 0x20, flags: 0x0},
- 613: {region: 0x113, script: 0x5b, flags: 0x0},
- 614: {region: 0xe8, script: 0x5b, flags: 0x0},
- 615: {region: 0x107, script: 0x5b, flags: 0x0},
- 616: {region: 0x166, script: 0x5b, flags: 0x0},
- 617: {region: 0x9a, script: 0x22, flags: 0x0},
- 618: {region: 0x9a, script: 0x5, flags: 0x0},
- 619: {region: 0x130, script: 0x5b, flags: 0x0},
- 620: {region: 0x166, script: 0x5b, flags: 0x0},
- 621: {region: 0x52, script: 0x5b, flags: 0x0},
- 622: {region: 0x61, script: 0x5b, flags: 0x0},
- 623: {region: 0x166, script: 0x5b, flags: 0x0},
- 624: {region: 0x166, script: 0x5b, flags: 0x0},
- 625: {region: 0x166, script: 0x2c, flags: 0x0},
- 626: {region: 0x166, script: 0x5b, flags: 0x0},
- 627: {region: 0x166, script: 0x5b, flags: 0x0},
- 628: {region: 0x19, script: 0x3, flags: 0x1},
- 629: {region: 0x166, script: 0x5b, flags: 0x0},
- 630: {region: 0x166, script: 0x5b, flags: 0x0},
- 631: {region: 0x166, script: 0x5b, flags: 0x0},
- 632: {region: 0x166, script: 0x5b, flags: 0x0},
- 633: {region: 0x107, script: 0x20, flags: 0x0},
- 634: {region: 0x166, script: 0x5b, flags: 0x0},
- 635: {region: 0x166, script: 0x5b, flags: 0x0},
- 636: {region: 0x166, script: 0x5b, flags: 0x0},
- 637: {region: 0x107, script: 0x20, flags: 0x0},
- 638: {region: 0x166, script: 0x5b, flags: 0x0},
- 639: {region: 0x96, script: 0x5b, flags: 0x0},
- 640: {region: 0xe9, script: 0x5, flags: 0x0},
- 641: {region: 0x7c, script: 0x5b, flags: 0x0},
- 642: {region: 0x166, script: 0x5b, flags: 0x0},
- 643: {region: 0x166, script: 0x5b, flags: 0x0},
- 644: {region: 0x166, script: 0x5b, flags: 0x0},
- 645: {region: 0x166, script: 0x2c, flags: 0x0},
- 646: {region: 0x124, script: 0xee, flags: 0x0},
- 647: {region: 0xe9, script: 0x5, flags: 0x0},
- 648: {region: 0x166, script: 0x5b, flags: 0x0},
- 649: {region: 0x166, script: 0x5b, flags: 0x0},
- 650: {region: 0x1c, script: 0x5, flags: 0x1},
- 651: {region: 0x166, script: 0x5b, flags: 0x0},
- 652: {region: 0x166, script: 0x5b, flags: 0x0},
- 653: {region: 0x166, script: 0x5b, flags: 0x0},
- 654: {region: 0x139, script: 0x5b, flags: 0x0},
- 655: {region: 0x88, script: 0x5f, flags: 0x0},
- 656: {region: 0x98, script: 0x3e, flags: 0x0},
- 657: {region: 0x130, script: 0x5b, flags: 0x0},
- 658: {region: 0xe9, script: 0x5, flags: 0x0},
- 659: {region: 0x132, script: 0x5b, flags: 0x0},
- 660: {region: 0x166, script: 0x5b, flags: 0x0},
- 661: {region: 0xb8, script: 0x5b, flags: 0x0},
- 662: {region: 0x107, script: 0x20, flags: 0x0},
- 663: {region: 0x166, script: 0x5b, flags: 0x0},
- 664: {region: 0x96, script: 0x5b, flags: 0x0},
- 665: {region: 0x166, script: 0x5b, flags: 0x0},
- 666: {region: 0x53, script: 0xee, flags: 0x0},
- 667: {region: 0x166, script: 0x5b, flags: 0x0},
- 668: {region: 0x166, script: 0x5b, flags: 0x0},
- 669: {region: 0x166, script: 0x5b, flags: 0x0},
- 670: {region: 0x166, script: 0x5b, flags: 0x0},
- 671: {region: 0x9a, script: 0x5d, flags: 0x0},
- 672: {region: 0x166, script: 0x5b, flags: 0x0},
- 673: {region: 0x166, script: 0x5b, flags: 0x0},
- 674: {region: 0x107, script: 0x20, flags: 0x0},
- 675: {region: 0x132, script: 0x5b, flags: 0x0},
- 676: {region: 0x166, script: 0x5b, flags: 0x0},
- 677: {region: 0xda, script: 0x5b, flags: 0x0},
- 678: {region: 0x166, script: 0x5b, flags: 0x0},
- 679: {region: 0x166, script: 0x5b, flags: 0x0},
- 680: {region: 0x21, script: 0x2, flags: 0x1},
- 681: {region: 0x166, script: 0x5b, flags: 0x0},
- 682: {region: 0x166, script: 0x5b, flags: 0x0},
- 683: {region: 0x9f, script: 0x5b, flags: 0x0},
- 684: {region: 0x53, script: 0x61, flags: 0x0},
- 685: {region: 0x96, script: 0x5b, flags: 0x0},
- 686: {region: 0x9d, script: 0x5, flags: 0x0},
- 687: {region: 0x136, script: 0x5b, flags: 0x0},
- 688: {region: 0x166, script: 0x5b, flags: 0x0},
- 689: {region: 0x166, script: 0x5b, flags: 0x0},
- 690: {region: 0x9a, script: 0xe9, flags: 0x0},
- 691: {region: 0x9f, script: 0x5b, flags: 0x0},
- 692: {region: 0x166, script: 0x5b, flags: 0x0},
- 693: {region: 0x4b, script: 0x5b, flags: 0x0},
- 694: {region: 0x166, script: 0x5b, flags: 0x0},
- 695: {region: 0x166, script: 0x5b, flags: 0x0},
- 696: {region: 0xb0, script: 0x58, flags: 0x0},
- 697: {region: 0x166, script: 0x5b, flags: 0x0},
- 698: {region: 0x166, script: 0x5b, flags: 0x0},
- 699: {region: 0x4b, script: 0x5b, flags: 0x0},
- 700: {region: 0x166, script: 0x5b, flags: 0x0},
- 701: {region: 0x166, script: 0x5b, flags: 0x0},
- 702: {region: 0x163, script: 0x5b, flags: 0x0},
- 703: {region: 0x9d, script: 0x5, flags: 0x0},
- 704: {region: 0xb7, script: 0x5b, flags: 0x0},
- 705: {region: 0xb9, script: 0x5b, flags: 0x0},
- 706: {region: 0x4b, script: 0x5b, flags: 0x0},
- 707: {region: 0x4b, script: 0x5b, flags: 0x0},
- 708: {region: 0xa5, script: 0x5b, flags: 0x0},
- 709: {region: 0xa5, script: 0x5b, flags: 0x0},
- 710: {region: 0x9d, script: 0x5, flags: 0x0},
- 711: {region: 0xb9, script: 0x5b, flags: 0x0},
- 712: {region: 0x124, script: 0xee, flags: 0x0},
- 713: {region: 0x53, script: 0x3b, flags: 0x0},
- 714: {region: 0x12c, script: 0x5b, flags: 0x0},
- 715: {region: 0x96, script: 0x5b, flags: 0x0},
- 716: {region: 0x52, script: 0x5b, flags: 0x0},
- 717: {region: 0x9a, script: 0x22, flags: 0x0},
- 718: {region: 0x9a, script: 0x22, flags: 0x0},
- 719: {region: 0x96, script: 0x5b, flags: 0x0},
- 720: {region: 0x23, script: 0x3, flags: 0x1},
- 721: {region: 0xa5, script: 0x5b, flags: 0x0},
- 722: {region: 0x166, script: 0x5b, flags: 0x0},
- 723: {region: 0xd0, script: 0x5b, flags: 0x0},
- 724: {region: 0x166, script: 0x5b, flags: 0x0},
- 725: {region: 0x166, script: 0x5b, flags: 0x0},
- 726: {region: 0x166, script: 0x5b, flags: 0x0},
- 727: {region: 0x166, script: 0x5b, flags: 0x0},
- 728: {region: 0x166, script: 0x5b, flags: 0x0},
- 729: {region: 0x166, script: 0x5b, flags: 0x0},
- 730: {region: 0x166, script: 0x5b, flags: 0x0},
- 731: {region: 0x166, script: 0x5b, flags: 0x0},
- 732: {region: 0x166, script: 0x5b, flags: 0x0},
- 733: {region: 0x166, script: 0x5b, flags: 0x0},
- 734: {region: 0x166, script: 0x5b, flags: 0x0},
- 735: {region: 0x166, script: 0x5, flags: 0x0},
- 736: {region: 0x107, script: 0x20, flags: 0x0},
- 737: {region: 0xe8, script: 0x5b, flags: 0x0},
- 738: {region: 0x166, script: 0x5b, flags: 0x0},
- 739: {region: 0x96, script: 0x5b, flags: 0x0},
- 740: {region: 0x166, script: 0x2c, flags: 0x0},
- 741: {region: 0x166, script: 0x5b, flags: 0x0},
- 742: {region: 0x166, script: 0x5b, flags: 0x0},
- 743: {region: 0x166, script: 0x5b, flags: 0x0},
- 744: {region: 0x113, script: 0x5b, flags: 0x0},
- 745: {region: 0xa5, script: 0x5b, flags: 0x0},
- 746: {region: 0x166, script: 0x5b, flags: 0x0},
- 747: {region: 0x166, script: 0x5b, flags: 0x0},
- 748: {region: 0x124, script: 0x5, flags: 0x0},
- 749: {region: 0xcd, script: 0x5b, flags: 0x0},
- 750: {region: 0x166, script: 0x5b, flags: 0x0},
- 751: {region: 0x166, script: 0x5b, flags: 0x0},
- 752: {region: 0x166, script: 0x5b, flags: 0x0},
- 753: {region: 0xc0, script: 0x5b, flags: 0x0},
- 754: {region: 0xd2, script: 0x5b, flags: 0x0},
- 755: {region: 0x166, script: 0x5b, flags: 0x0},
- 756: {region: 0x52, script: 0x5b, flags: 0x0},
- 757: {region: 0xdc, script: 0x22, flags: 0x0},
- 758: {region: 0x130, script: 0x5b, flags: 0x0},
- 759: {region: 0xc1, script: 0x5b, flags: 0x0},
- 760: {region: 0x166, script: 0x5b, flags: 0x0},
- 761: {region: 0x166, script: 0x5b, flags: 0x0},
- 762: {region: 0xe1, script: 0x5b, flags: 0x0},
- 763: {region: 0x166, script: 0x5b, flags: 0x0},
- 764: {region: 0x96, script: 0x5b, flags: 0x0},
- 765: {region: 0x9c, script: 0x3d, flags: 0x0},
- 766: {region: 0x166, script: 0x5b, flags: 0x0},
- 767: {region: 0xc3, script: 0x20, flags: 0x0},
- 768: {region: 0x166, script: 0x5, flags: 0x0},
- 769: {region: 0x166, script: 0x5b, flags: 0x0},
- 770: {region: 0x166, script: 0x5b, flags: 0x0},
- 771: {region: 0x166, script: 0x5b, flags: 0x0},
- 772: {region: 0x9a, script: 0x6f, flags: 0x0},
- 773: {region: 0x166, script: 0x5b, flags: 0x0},
- 774: {region: 0x166, script: 0x5b, flags: 0x0},
- 775: {region: 0x10c, script: 0x5b, flags: 0x0},
- 776: {region: 0x166, script: 0x5b, flags: 0x0},
- 777: {region: 0x166, script: 0x5b, flags: 0x0},
- 778: {region: 0x166, script: 0x5b, flags: 0x0},
- 779: {region: 0x26, script: 0x3, flags: 0x1},
- 780: {region: 0x166, script: 0x5b, flags: 0x0},
- 781: {region: 0x166, script: 0x5b, flags: 0x0},
- 782: {region: 0x9a, script: 0xe, flags: 0x0},
- 783: {region: 0xc5, script: 0x76, flags: 0x0},
- 785: {region: 0x166, script: 0x5b, flags: 0x0},
- 786: {region: 0x49, script: 0x5b, flags: 0x0},
- 787: {region: 0x49, script: 0x5b, flags: 0x0},
- 788: {region: 0x37, script: 0x5b, flags: 0x0},
- 789: {region: 0x166, script: 0x5b, flags: 0x0},
- 790: {region: 0x166, script: 0x5b, flags: 0x0},
- 791: {region: 0x166, script: 0x5b, flags: 0x0},
- 792: {region: 0x166, script: 0x5b, flags: 0x0},
- 793: {region: 0x166, script: 0x5b, flags: 0x0},
- 794: {region: 0x166, script: 0x5b, flags: 0x0},
- 795: {region: 0x9a, script: 0x22, flags: 0x0},
- 796: {region: 0xdc, script: 0x22, flags: 0x0},
- 797: {region: 0x107, script: 0x20, flags: 0x0},
- 798: {region: 0x35, script: 0x73, flags: 0x0},
- 799: {region: 0x29, script: 0x3, flags: 0x1},
- 800: {region: 0xcc, script: 0x5b, flags: 0x0},
- 801: {region: 0x166, script: 0x5b, flags: 0x0},
- 802: {region: 0x166, script: 0x5b, flags: 0x0},
- 803: {region: 0x166, script: 0x5b, flags: 0x0},
- 804: {region: 0x9a, script: 0x22, flags: 0x0},
- 805: {region: 0x52, script: 0x5b, flags: 0x0},
- 807: {region: 0x166, script: 0x5b, flags: 0x0},
- 808: {region: 0x136, script: 0x5b, flags: 0x0},
- 809: {region: 0x166, script: 0x5b, flags: 0x0},
- 810: {region: 0x166, script: 0x5b, flags: 0x0},
- 811: {region: 0xe9, script: 0x5, flags: 0x0},
- 812: {region: 0xc4, script: 0x5b, flags: 0x0},
- 813: {region: 0x9a, script: 0x22, flags: 0x0},
- 814: {region: 0x96, script: 0x5b, flags: 0x0},
- 815: {region: 0x165, script: 0x5b, flags: 0x0},
- 816: {region: 0x166, script: 0x5b, flags: 0x0},
- 817: {region: 0xc5, script: 0x76, flags: 0x0},
- 818: {region: 0x166, script: 0x5b, flags: 0x0},
- 819: {region: 0x166, script: 0x2c, flags: 0x0},
- 820: {region: 0x107, script: 0x20, flags: 0x0},
- 821: {region: 0x166, script: 0x5b, flags: 0x0},
- 822: {region: 0x132, script: 0x5b, flags: 0x0},
- 823: {region: 0x9d, script: 0x67, flags: 0x0},
- 824: {region: 0x166, script: 0x5b, flags: 0x0},
- 825: {region: 0x166, script: 0x5b, flags: 0x0},
- 826: {region: 0x9d, script: 0x5, flags: 0x0},
- 827: {region: 0x166, script: 0x5b, flags: 0x0},
- 828: {region: 0x166, script: 0x5b, flags: 0x0},
- 829: {region: 0x166, script: 0x5b, flags: 0x0},
- 830: {region: 0xde, script: 0x5b, flags: 0x0},
- 831: {region: 0x166, script: 0x5b, flags: 0x0},
- 832: {region: 0x166, script: 0x5b, flags: 0x0},
- 834: {region: 0x166, script: 0x5b, flags: 0x0},
- 835: {region: 0x53, script: 0x3b, flags: 0x0},
- 836: {region: 0x9f, script: 0x5b, flags: 0x0},
- 837: {region: 0xd3, script: 0x5b, flags: 0x0},
- 838: {region: 0x166, script: 0x5b, flags: 0x0},
- 839: {region: 0xdb, script: 0x5b, flags: 0x0},
- 840: {region: 0x166, script: 0x5b, flags: 0x0},
- 841: {region: 0x166, script: 0x5b, flags: 0x0},
- 842: {region: 0x166, script: 0x5b, flags: 0x0},
- 843: {region: 0xd0, script: 0x5b, flags: 0x0},
- 844: {region: 0x166, script: 0x5b, flags: 0x0},
- 845: {region: 0x166, script: 0x5b, flags: 0x0},
- 846: {region: 0x165, script: 0x5b, flags: 0x0},
- 847: {region: 0xd2, script: 0x5b, flags: 0x0},
- 848: {region: 0x61, script: 0x5b, flags: 0x0},
- 849: {region: 0xdc, script: 0x22, flags: 0x0},
- 850: {region: 0x166, script: 0x5b, flags: 0x0},
- 851: {region: 0xdc, script: 0x22, flags: 0x0},
- 852: {region: 0x166, script: 0x5b, flags: 0x0},
- 853: {region: 0x166, script: 0x5b, flags: 0x0},
- 854: {region: 0xd3, script: 0x5b, flags: 0x0},
- 855: {region: 0x166, script: 0x5b, flags: 0x0},
- 856: {region: 0x166, script: 0x5b, flags: 0x0},
- 857: {region: 0xd2, script: 0x5b, flags: 0x0},
- 858: {region: 0x166, script: 0x5b, flags: 0x0},
- 859: {region: 0xd0, script: 0x5b, flags: 0x0},
- 860: {region: 0xd0, script: 0x5b, flags: 0x0},
- 861: {region: 0x166, script: 0x5b, flags: 0x0},
- 862: {region: 0x166, script: 0x5b, flags: 0x0},
- 863: {region: 0x96, script: 0x5b, flags: 0x0},
- 864: {region: 0x166, script: 0x5b, flags: 0x0},
- 865: {region: 0xe0, script: 0x5b, flags: 0x0},
- 866: {region: 0x166, script: 0x5b, flags: 0x0},
- 867: {region: 0x166, script: 0x5b, flags: 0x0},
- 868: {region: 0x9a, script: 0x5b, flags: 0x0},
- 869: {region: 0x166, script: 0x5b, flags: 0x0},
- 870: {region: 0x166, script: 0x5b, flags: 0x0},
- 871: {region: 0xda, script: 0x5b, flags: 0x0},
- 872: {region: 0x52, script: 0x5b, flags: 0x0},
- 873: {region: 0x166, script: 0x5b, flags: 0x0},
- 874: {region: 0xdb, script: 0x5b, flags: 0x0},
- 875: {region: 0x166, script: 0x5b, flags: 0x0},
- 876: {region: 0x52, script: 0x5b, flags: 0x0},
- 877: {region: 0x166, script: 0x5b, flags: 0x0},
- 878: {region: 0x166, script: 0x5b, flags: 0x0},
- 879: {region: 0xdb, script: 0x5b, flags: 0x0},
- 880: {region: 0x124, script: 0x57, flags: 0x0},
- 881: {region: 0x9a, script: 0x22, flags: 0x0},
- 882: {region: 0x10d, script: 0xcb, flags: 0x0},
- 883: {region: 0x166, script: 0x5b, flags: 0x0},
- 884: {region: 0x166, script: 0x5b, flags: 0x0},
- 885: {region: 0x85, script: 0x7e, flags: 0x0},
- 886: {region: 0x162, script: 0x5b, flags: 0x0},
- 887: {region: 0x166, script: 0x5b, flags: 0x0},
- 888: {region: 0x49, script: 0x17, flags: 0x0},
- 889: {region: 0x166, script: 0x5b, flags: 0x0},
- 890: {region: 0x162, script: 0x5b, flags: 0x0},
- 891: {region: 0x166, script: 0x5b, flags: 0x0},
- 892: {region: 0x166, script: 0x5b, flags: 0x0},
- 893: {region: 0x166, script: 0x5b, flags: 0x0},
- 894: {region: 0x166, script: 0x5b, flags: 0x0},
- 895: {region: 0x166, script: 0x5b, flags: 0x0},
- 896: {region: 0x118, script: 0x5b, flags: 0x0},
- 897: {region: 0x166, script: 0x5b, flags: 0x0},
- 898: {region: 0x166, script: 0x5b, flags: 0x0},
- 899: {region: 0x136, script: 0x5b, flags: 0x0},
- 900: {region: 0x166, script: 0x5b, flags: 0x0},
- 901: {region: 0x53, script: 0x5b, flags: 0x0},
- 902: {region: 0x166, script: 0x5b, flags: 0x0},
- 903: {region: 0xcf, script: 0x5b, flags: 0x0},
- 904: {region: 0x130, script: 0x5b, flags: 0x0},
- 905: {region: 0x132, script: 0x5b, flags: 0x0},
- 906: {region: 0x81, script: 0x5b, flags: 0x0},
- 907: {region: 0x79, script: 0x5b, flags: 0x0},
- 908: {region: 0x166, script: 0x5b, flags: 0x0},
- 910: {region: 0x166, script: 0x5b, flags: 0x0},
- 911: {region: 0x166, script: 0x5b, flags: 0x0},
- 912: {region: 0x70, script: 0x5b, flags: 0x0},
- 913: {region: 0x166, script: 0x5b, flags: 0x0},
- 914: {region: 0x166, script: 0x5b, flags: 0x0},
- 915: {region: 0x166, script: 0x5b, flags: 0x0},
- 916: {region: 0x166, script: 0x5b, flags: 0x0},
- 917: {region: 0x9a, script: 0x83, flags: 0x0},
- 918: {region: 0x166, script: 0x5b, flags: 0x0},
- 919: {region: 0x166, script: 0x5, flags: 0x0},
- 920: {region: 0x7e, script: 0x20, flags: 0x0},
- 921: {region: 0x136, script: 0x84, flags: 0x0},
- 922: {region: 0x166, script: 0x5, flags: 0x0},
- 923: {region: 0xc6, script: 0x82, flags: 0x0},
- 924: {region: 0x166, script: 0x5b, flags: 0x0},
- 925: {region: 0x2c, script: 0x3, flags: 0x1},
- 926: {region: 0xe8, script: 0x5b, flags: 0x0},
- 927: {region: 0x2f, script: 0x2, flags: 0x1},
- 928: {region: 0xe8, script: 0x5b, flags: 0x0},
- 929: {region: 0x30, script: 0x5b, flags: 0x0},
- 930: {region: 0xf1, script: 0x5b, flags: 0x0},
- 931: {region: 0x166, script: 0x5b, flags: 0x0},
- 932: {region: 0x79, script: 0x5b, flags: 0x0},
- 933: {region: 0xd7, script: 0x5b, flags: 0x0},
- 934: {region: 0x136, script: 0x5b, flags: 0x0},
- 935: {region: 0x49, script: 0x5b, flags: 0x0},
- 936: {region: 0x166, script: 0x5b, flags: 0x0},
- 937: {region: 0x9d, script: 0xfa, flags: 0x0},
- 938: {region: 0x166, script: 0x5b, flags: 0x0},
- 939: {region: 0x61, script: 0x5b, flags: 0x0},
- 940: {region: 0x166, script: 0x5, flags: 0x0},
- 941: {region: 0xb1, script: 0x90, flags: 0x0},
- 943: {region: 0x166, script: 0x5b, flags: 0x0},
- 944: {region: 0x166, script: 0x5b, flags: 0x0},
- 945: {region: 0x9a, script: 0x12, flags: 0x0},
- 946: {region: 0xa5, script: 0x5b, flags: 0x0},
- 947: {region: 0xea, script: 0x5b, flags: 0x0},
- 948: {region: 0x166, script: 0x5b, flags: 0x0},
- 949: {region: 0x9f, script: 0x5b, flags: 0x0},
- 950: {region: 0x166, script: 0x5b, flags: 0x0},
- 951: {region: 0x166, script: 0x5b, flags: 0x0},
- 952: {region: 0x88, script: 0x34, flags: 0x0},
- 953: {region: 0x76, script: 0x5b, flags: 0x0},
- 954: {region: 0x166, script: 0x5b, flags: 0x0},
- 955: {region: 0xe9, script: 0x4e, flags: 0x0},
- 956: {region: 0x9d, script: 0x5, flags: 0x0},
- 957: {region: 0x1, script: 0x5b, flags: 0x0},
- 958: {region: 0x24, script: 0x5, flags: 0x0},
- 959: {region: 0x166, script: 0x5b, flags: 0x0},
- 960: {region: 0x41, script: 0x5b, flags: 0x0},
- 961: {region: 0x166, script: 0x5b, flags: 0x0},
- 962: {region: 0x7b, script: 0x5b, flags: 0x0},
- 963: {region: 0x166, script: 0x5b, flags: 0x0},
- 964: {region: 0xe5, script: 0x5b, flags: 0x0},
- 965: {region: 0x8a, script: 0x5b, flags: 0x0},
- 966: {region: 0x6a, script: 0x5b, flags: 0x0},
- 967: {region: 0x166, script: 0x5b, flags: 0x0},
- 968: {region: 0x9a, script: 0x22, flags: 0x0},
- 969: {region: 0x166, script: 0x5b, flags: 0x0},
- 970: {region: 0x103, script: 0x5b, flags: 0x0},
- 971: {region: 0x96, script: 0x5b, flags: 0x0},
- 972: {region: 0x166, script: 0x5b, flags: 0x0},
- 973: {region: 0x166, script: 0x5b, flags: 0x0},
- 974: {region: 0x9f, script: 0x5b, flags: 0x0},
- 975: {region: 0x166, script: 0x5, flags: 0x0},
- 976: {region: 0x9a, script: 0x5b, flags: 0x0},
- 977: {region: 0x31, script: 0x2, flags: 0x1},
- 978: {region: 0xdc, script: 0x22, flags: 0x0},
- 979: {region: 0x35, script: 0xe, flags: 0x0},
- 980: {region: 0x4e, script: 0x5b, flags: 0x0},
- 981: {region: 0x73, script: 0x5b, flags: 0x0},
- 982: {region: 0x4e, script: 0x5b, flags: 0x0},
- 983: {region: 0x9d, script: 0x5, flags: 0x0},
- 984: {region: 0x10d, script: 0x5b, flags: 0x0},
- 985: {region: 0x3a, script: 0x5b, flags: 0x0},
- 986: {region: 0x166, script: 0x5b, flags: 0x0},
- 987: {region: 0xd2, script: 0x5b, flags: 0x0},
- 988: {region: 0x105, script: 0x5b, flags: 0x0},
- 989: {region: 0x96, script: 0x5b, flags: 0x0},
- 990: {region: 0x130, script: 0x5b, flags: 0x0},
- 991: {region: 0x166, script: 0x5b, flags: 0x0},
- 992: {region: 0x166, script: 0x5b, flags: 0x0},
- 993: {region: 0x74, script: 0x5b, flags: 0x0},
- 994: {region: 0x107, script: 0x20, flags: 0x0},
- 995: {region: 0x131, script: 0x20, flags: 0x0},
- 996: {region: 0x10a, script: 0x5b, flags: 0x0},
- 997: {region: 0x108, script: 0x5b, flags: 0x0},
- 998: {region: 0x130, script: 0x5b, flags: 0x0},
- 999: {region: 0x166, script: 0x5b, flags: 0x0},
- 1000: {region: 0xa3, script: 0x4c, flags: 0x0},
- 1001: {region: 0x9a, script: 0x22, flags: 0x0},
- 1002: {region: 0x81, script: 0x5b, flags: 0x0},
- 1003: {region: 0x107, script: 0x20, flags: 0x0},
- 1004: {region: 0xa5, script: 0x5b, flags: 0x0},
- 1005: {region: 0x96, script: 0x5b, flags: 0x0},
- 1006: {region: 0x9a, script: 0x5b, flags: 0x0},
- 1007: {region: 0x115, script: 0x5b, flags: 0x0},
- 1008: {region: 0x9a, script: 0xcf, flags: 0x0},
- 1009: {region: 0x166, script: 0x5b, flags: 0x0},
- 1010: {region: 0x166, script: 0x5b, flags: 0x0},
- 1011: {region: 0x130, script: 0x5b, flags: 0x0},
- 1012: {region: 0x9f, script: 0x5b, flags: 0x0},
- 1013: {region: 0x9a, script: 0x22, flags: 0x0},
- 1014: {region: 0x166, script: 0x5, flags: 0x0},
- 1015: {region: 0x9f, script: 0x5b, flags: 0x0},
- 1016: {region: 0x7c, script: 0x5b, flags: 0x0},
- 1017: {region: 0x49, script: 0x5b, flags: 0x0},
- 1018: {region: 0x33, script: 0x4, flags: 0x1},
- 1019: {region: 0x9f, script: 0x5b, flags: 0x0},
- 1020: {region: 0x9d, script: 0x5, flags: 0x0},
- 1021: {region: 0xdb, script: 0x5b, flags: 0x0},
- 1022: {region: 0x4f, script: 0x5b, flags: 0x0},
- 1023: {region: 0xd2, script: 0x5b, flags: 0x0},
- 1024: {region: 0xd0, script: 0x5b, flags: 0x0},
- 1025: {region: 0xc4, script: 0x5b, flags: 0x0},
- 1026: {region: 0x4c, script: 0x5b, flags: 0x0},
- 1027: {region: 0x97, script: 0x80, flags: 0x0},
- 1028: {region: 0xb7, script: 0x5b, flags: 0x0},
- 1029: {region: 0x166, script: 0x2c, flags: 0x0},
- 1030: {region: 0x166, script: 0x5b, flags: 0x0},
- 1032: {region: 0xbb, script: 0xeb, flags: 0x0},
- 1033: {region: 0x166, script: 0x5b, flags: 0x0},
- 1034: {region: 0xc5, script: 0x76, flags: 0x0},
- 1035: {region: 0x166, script: 0x5, flags: 0x0},
- 1036: {region: 0xb4, script: 0xd6, flags: 0x0},
- 1037: {region: 0x70, script: 0x5b, flags: 0x0},
- 1038: {region: 0x166, script: 0x5b, flags: 0x0},
- 1039: {region: 0x166, script: 0x5b, flags: 0x0},
- 1040: {region: 0x166, script: 0x5b, flags: 0x0},
- 1041: {region: 0x166, script: 0x5b, flags: 0x0},
- 1042: {region: 0x112, script: 0x5b, flags: 0x0},
- 1043: {region: 0x166, script: 0x5b, flags: 0x0},
- 1044: {region: 0xe9, script: 0x5, flags: 0x0},
- 1045: {region: 0x166, script: 0x5b, flags: 0x0},
- 1046: {region: 0x110, script: 0x5b, flags: 0x0},
- 1047: {region: 0x166, script: 0x5b, flags: 0x0},
- 1048: {region: 0xea, script: 0x5b, flags: 0x0},
- 1049: {region: 0x166, script: 0x5b, flags: 0x0},
- 1050: {region: 0x96, script: 0x5b, flags: 0x0},
- 1051: {region: 0x143, script: 0x5b, flags: 0x0},
- 1052: {region: 0x10d, script: 0x5b, flags: 0x0},
- 1054: {region: 0x10d, script: 0x5b, flags: 0x0},
- 1055: {region: 0x73, script: 0x5b, flags: 0x0},
- 1056: {region: 0x98, script: 0xcc, flags: 0x0},
- 1057: {region: 0x166, script: 0x5b, flags: 0x0},
- 1058: {region: 0x73, script: 0x5b, flags: 0x0},
- 1059: {region: 0x165, script: 0x5b, flags: 0x0},
- 1060: {region: 0x166, script: 0x5b, flags: 0x0},
- 1061: {region: 0xc4, script: 0x5b, flags: 0x0},
- 1062: {region: 0x166, script: 0x5b, flags: 0x0},
- 1063: {region: 0x166, script: 0x5b, flags: 0x0},
- 1064: {region: 0x166, script: 0x5b, flags: 0x0},
- 1065: {region: 0x116, script: 0x5b, flags: 0x0},
- 1066: {region: 0x166, script: 0x5b, flags: 0x0},
- 1067: {region: 0x166, script: 0x5b, flags: 0x0},
- 1068: {region: 0x124, script: 0xee, flags: 0x0},
- 1069: {region: 0x166, script: 0x5b, flags: 0x0},
- 1070: {region: 0x166, script: 0x5b, flags: 0x0},
- 1071: {region: 0x166, script: 0x5b, flags: 0x0},
- 1072: {region: 0x166, script: 0x5b, flags: 0x0},
- 1073: {region: 0x27, script: 0x5b, flags: 0x0},
- 1074: {region: 0x37, script: 0x5, flags: 0x1},
- 1075: {region: 0x9a, script: 0xd9, flags: 0x0},
- 1076: {region: 0x117, script: 0x5b, flags: 0x0},
- 1077: {region: 0x115, script: 0x5b, flags: 0x0},
- 1078: {region: 0x9a, script: 0x22, flags: 0x0},
- 1079: {region: 0x162, script: 0x5b, flags: 0x0},
- 1080: {region: 0x166, script: 0x5b, flags: 0x0},
- 1081: {region: 0x166, script: 0x5b, flags: 0x0},
- 1082: {region: 0x6e, script: 0x5b, flags: 0x0},
- 1083: {region: 0x162, script: 0x5b, flags: 0x0},
- 1084: {region: 0x166, script: 0x5b, flags: 0x0},
- 1085: {region: 0x61, script: 0x5b, flags: 0x0},
- 1086: {region: 0x96, script: 0x5b, flags: 0x0},
- 1087: {region: 0x166, script: 0x5b, flags: 0x0},
- 1088: {region: 0x166, script: 0x5b, flags: 0x0},
- 1089: {region: 0x130, script: 0x5b, flags: 0x0},
- 1090: {region: 0x166, script: 0x5b, flags: 0x0},
- 1091: {region: 0x85, script: 0x5b, flags: 0x0},
- 1092: {region: 0x10d, script: 0x5b, flags: 0x0},
- 1093: {region: 0x130, script: 0x5b, flags: 0x0},
- 1094: {region: 0x160, script: 0x5, flags: 0x0},
- 1095: {region: 0x4b, script: 0x5b, flags: 0x0},
- 1096: {region: 0x61, script: 0x5b, flags: 0x0},
- 1097: {region: 0x166, script: 0x5b, flags: 0x0},
- 1098: {region: 0x9a, script: 0x22, flags: 0x0},
- 1099: {region: 0x96, script: 0x5b, flags: 0x0},
- 1100: {region: 0x166, script: 0x5b, flags: 0x0},
- 1101: {region: 0x35, script: 0xe, flags: 0x0},
- 1102: {region: 0x9c, script: 0xde, flags: 0x0},
- 1103: {region: 0xea, script: 0x5b, flags: 0x0},
- 1104: {region: 0x9a, script: 0xe6, flags: 0x0},
- 1105: {region: 0xdc, script: 0x22, flags: 0x0},
- 1106: {region: 0x166, script: 0x5b, flags: 0x0},
- 1107: {region: 0x166, script: 0x5b, flags: 0x0},
- 1108: {region: 0x166, script: 0x5b, flags: 0x0},
- 1109: {region: 0x166, script: 0x5b, flags: 0x0},
- 1110: {region: 0x166, script: 0x5b, flags: 0x0},
- 1111: {region: 0x166, script: 0x5b, flags: 0x0},
- 1112: {region: 0x166, script: 0x5b, flags: 0x0},
- 1113: {region: 0x166, script: 0x5b, flags: 0x0},
- 1114: {region: 0xe8, script: 0x5b, flags: 0x0},
- 1115: {region: 0x166, script: 0x5b, flags: 0x0},
- 1116: {region: 0x166, script: 0x5b, flags: 0x0},
- 1117: {region: 0x9a, script: 0x53, flags: 0x0},
- 1118: {region: 0x53, script: 0xe4, flags: 0x0},
- 1119: {region: 0xdc, script: 0x22, flags: 0x0},
- 1120: {region: 0xdc, script: 0x22, flags: 0x0},
- 1121: {region: 0x9a, script: 0xe9, flags: 0x0},
- 1122: {region: 0x166, script: 0x5b, flags: 0x0},
- 1123: {region: 0x113, script: 0x5b, flags: 0x0},
- 1124: {region: 0x132, script: 0x5b, flags: 0x0},
- 1125: {region: 0x127, script: 0x5b, flags: 0x0},
- 1126: {region: 0x166, script: 0x5b, flags: 0x0},
- 1127: {region: 0x3c, script: 0x3, flags: 0x1},
- 1128: {region: 0x166, script: 0x5b, flags: 0x0},
- 1129: {region: 0x166, script: 0x5b, flags: 0x0},
- 1130: {region: 0x166, script: 0x5b, flags: 0x0},
- 1131: {region: 0x124, script: 0xee, flags: 0x0},
- 1132: {region: 0xdc, script: 0x22, flags: 0x0},
- 1133: {region: 0xdc, script: 0x22, flags: 0x0},
- 1134: {region: 0xdc, script: 0x22, flags: 0x0},
- 1135: {region: 0x70, script: 0x2c, flags: 0x0},
- 1136: {region: 0x166, script: 0x5b, flags: 0x0},
- 1137: {region: 0x6e, script: 0x2c, flags: 0x0},
- 1138: {region: 0x166, script: 0x5b, flags: 0x0},
- 1139: {region: 0x166, script: 0x5b, flags: 0x0},
- 1140: {region: 0x166, script: 0x5b, flags: 0x0},
- 1141: {region: 0xd7, script: 0x5b, flags: 0x0},
- 1142: {region: 0x128, script: 0x5b, flags: 0x0},
- 1143: {region: 0x126, script: 0x5b, flags: 0x0},
- 1144: {region: 0x32, script: 0x5b, flags: 0x0},
- 1145: {region: 0xdc, script: 0x22, flags: 0x0},
- 1146: {region: 0xe8, script: 0x5b, flags: 0x0},
- 1147: {region: 0x166, script: 0x5b, flags: 0x0},
- 1148: {region: 0x166, script: 0x5b, flags: 0x0},
- 1149: {region: 0x32, script: 0x5b, flags: 0x0},
- 1150: {region: 0xd5, script: 0x5b, flags: 0x0},
- 1151: {region: 0x166, script: 0x5b, flags: 0x0},
- 1152: {region: 0x162, script: 0x5b, flags: 0x0},
- 1153: {region: 0x166, script: 0x5b, flags: 0x0},
- 1154: {region: 0x12a, script: 0x5b, flags: 0x0},
- 1155: {region: 0x166, script: 0x5b, flags: 0x0},
- 1156: {region: 0xcf, script: 0x5b, flags: 0x0},
- 1157: {region: 0x166, script: 0x5b, flags: 0x0},
- 1158: {region: 0xe7, script: 0x5b, flags: 0x0},
- 1159: {region: 0x166, script: 0x5b, flags: 0x0},
- 1160: {region: 0x166, script: 0x5b, flags: 0x0},
- 1161: {region: 0x166, script: 0x5b, flags: 0x0},
- 1162: {region: 0x12c, script: 0x5b, flags: 0x0},
- 1163: {region: 0x12c, script: 0x5b, flags: 0x0},
- 1164: {region: 0x12f, script: 0x5b, flags: 0x0},
- 1165: {region: 0x166, script: 0x5, flags: 0x0},
- 1166: {region: 0x162, script: 0x5b, flags: 0x0},
- 1167: {region: 0x88, script: 0x34, flags: 0x0},
- 1168: {region: 0xdc, script: 0x22, flags: 0x0},
- 1169: {region: 0xe8, script: 0x5b, flags: 0x0},
- 1170: {region: 0x43, script: 0xef, flags: 0x0},
- 1171: {region: 0x166, script: 0x5b, flags: 0x0},
- 1172: {region: 0x107, script: 0x20, flags: 0x0},
- 1173: {region: 0x166, script: 0x5b, flags: 0x0},
- 1174: {region: 0x166, script: 0x5b, flags: 0x0},
- 1175: {region: 0x132, script: 0x5b, flags: 0x0},
- 1176: {region: 0x166, script: 0x5b, flags: 0x0},
- 1177: {region: 0x124, script: 0xee, flags: 0x0},
- 1178: {region: 0x32, script: 0x5b, flags: 0x0},
- 1179: {region: 0x166, script: 0x5b, flags: 0x0},
- 1180: {region: 0x166, script: 0x5b, flags: 0x0},
- 1181: {region: 0xcf, script: 0x5b, flags: 0x0},
- 1182: {region: 0x166, script: 0x5b, flags: 0x0},
- 1183: {region: 0x166, script: 0x5b, flags: 0x0},
- 1184: {region: 0x12e, script: 0x5b, flags: 0x0},
- 1185: {region: 0x166, script: 0x5b, flags: 0x0},
- 1187: {region: 0x166, script: 0x5b, flags: 0x0},
- 1188: {region: 0xd5, script: 0x5b, flags: 0x0},
- 1189: {region: 0x53, script: 0xe7, flags: 0x0},
- 1190: {region: 0xe6, script: 0x5b, flags: 0x0},
- 1191: {region: 0x166, script: 0x5b, flags: 0x0},
- 1192: {region: 0x107, script: 0x20, flags: 0x0},
- 1193: {region: 0xbb, script: 0x5b, flags: 0x0},
- 1194: {region: 0x166, script: 0x5b, flags: 0x0},
- 1195: {region: 0x107, script: 0x20, flags: 0x0},
- 1196: {region: 0x3f, script: 0x4, flags: 0x1},
- 1197: {region: 0x11d, script: 0xf3, flags: 0x0},
- 1198: {region: 0x131, script: 0x20, flags: 0x0},
- 1199: {region: 0x76, script: 0x5b, flags: 0x0},
- 1200: {region: 0x2a, script: 0x5b, flags: 0x0},
- 1202: {region: 0x43, script: 0x3, flags: 0x1},
- 1203: {region: 0x9a, script: 0xe, flags: 0x0},
- 1204: {region: 0xe9, script: 0x5, flags: 0x0},
- 1205: {region: 0x166, script: 0x5b, flags: 0x0},
- 1206: {region: 0x166, script: 0x5b, flags: 0x0},
- 1207: {region: 0x166, script: 0x5b, flags: 0x0},
- 1208: {region: 0x166, script: 0x5b, flags: 0x0},
- 1209: {region: 0x166, script: 0x5b, flags: 0x0},
- 1210: {region: 0x166, script: 0x5b, flags: 0x0},
- 1211: {region: 0x166, script: 0x5b, flags: 0x0},
- 1212: {region: 0x46, script: 0x4, flags: 0x1},
- 1213: {region: 0x166, script: 0x5b, flags: 0x0},
- 1214: {region: 0xb5, script: 0xf4, flags: 0x0},
- 1215: {region: 0x166, script: 0x5b, flags: 0x0},
- 1216: {region: 0x162, script: 0x5b, flags: 0x0},
- 1217: {region: 0x9f, script: 0x5b, flags: 0x0},
- 1218: {region: 0x107, script: 0x5b, flags: 0x0},
- 1219: {region: 0x13f, script: 0x5b, flags: 0x0},
- 1220: {region: 0x11c, script: 0x5b, flags: 0x0},
- 1221: {region: 0x166, script: 0x5b, flags: 0x0},
- 1222: {region: 0x36, script: 0x5b, flags: 0x0},
- 1223: {region: 0x61, script: 0x5b, flags: 0x0},
- 1224: {region: 0xd2, script: 0x5b, flags: 0x0},
- 1225: {region: 0x1, script: 0x5b, flags: 0x0},
- 1226: {region: 0x107, script: 0x5b, flags: 0x0},
- 1227: {region: 0x6b, script: 0x5b, flags: 0x0},
- 1228: {region: 0x130, script: 0x5b, flags: 0x0},
- 1229: {region: 0x166, script: 0x5b, flags: 0x0},
- 1230: {region: 0x36, script: 0x5b, flags: 0x0},
- 1231: {region: 0x4e, script: 0x5b, flags: 0x0},
- 1232: {region: 0x166, script: 0x5b, flags: 0x0},
- 1233: {region: 0x70, script: 0x2c, flags: 0x0},
- 1234: {region: 0x166, script: 0x5b, flags: 0x0},
- 1235: {region: 0xe8, script: 0x5b, flags: 0x0},
- 1236: {region: 0x2f, script: 0x5b, flags: 0x0},
- 1237: {region: 0x9a, script: 0xe9, flags: 0x0},
- 1238: {region: 0x9a, script: 0x22, flags: 0x0},
- 1239: {region: 0x166, script: 0x5b, flags: 0x0},
- 1240: {region: 0x166, script: 0x5b, flags: 0x0},
- 1241: {region: 0x166, script: 0x5b, flags: 0x0},
- 1242: {region: 0x166, script: 0x5b, flags: 0x0},
- 1243: {region: 0x166, script: 0x5b, flags: 0x0},
- 1244: {region: 0x166, script: 0x5b, flags: 0x0},
- 1245: {region: 0x166, script: 0x5b, flags: 0x0},
- 1246: {region: 0x166, script: 0x5b, flags: 0x0},
- 1247: {region: 0x166, script: 0x5b, flags: 0x0},
- 1248: {region: 0x141, script: 0x5b, flags: 0x0},
- 1249: {region: 0x166, script: 0x5b, flags: 0x0},
- 1250: {region: 0x166, script: 0x5b, flags: 0x0},
- 1251: {region: 0xa9, script: 0x5, flags: 0x0},
- 1252: {region: 0x166, script: 0x5b, flags: 0x0},
- 1253: {region: 0x115, script: 0x5b, flags: 0x0},
- 1254: {region: 0x166, script: 0x5b, flags: 0x0},
- 1255: {region: 0x166, script: 0x5b, flags: 0x0},
- 1256: {region: 0x166, script: 0x5b, flags: 0x0},
- 1257: {region: 0x166, script: 0x5b, flags: 0x0},
- 1258: {region: 0x9a, script: 0x22, flags: 0x0},
- 1259: {region: 0x53, script: 0x3b, flags: 0x0},
- 1260: {region: 0x166, script: 0x5b, flags: 0x0},
- 1261: {region: 0x166, script: 0x5b, flags: 0x0},
- 1262: {region: 0x41, script: 0x5b, flags: 0x0},
- 1263: {region: 0x166, script: 0x5b, flags: 0x0},
- 1264: {region: 0x12c, script: 0x18, flags: 0x0},
- 1265: {region: 0x166, script: 0x5b, flags: 0x0},
- 1266: {region: 0x162, script: 0x5b, flags: 0x0},
- 1267: {region: 0x166, script: 0x5b, flags: 0x0},
- 1268: {region: 0x12c, script: 0x63, flags: 0x0},
- 1269: {region: 0x12c, script: 0x64, flags: 0x0},
- 1270: {region: 0x7e, script: 0x2e, flags: 0x0},
- 1271: {region: 0x53, script: 0x68, flags: 0x0},
- 1272: {region: 0x10c, script: 0x6d, flags: 0x0},
- 1273: {region: 0x109, script: 0x79, flags: 0x0},
- 1274: {region: 0x9a, script: 0x22, flags: 0x0},
- 1275: {region: 0x132, script: 0x5b, flags: 0x0},
- 1276: {region: 0x166, script: 0x5b, flags: 0x0},
- 1277: {region: 0x9d, script: 0x93, flags: 0x0},
- 1278: {region: 0x166, script: 0x5b, flags: 0x0},
- 1279: {region: 0x15f, script: 0xce, flags: 0x0},
- 1280: {region: 0x166, script: 0x5b, flags: 0x0},
- 1281: {region: 0x166, script: 0x5b, flags: 0x0},
- 1282: {region: 0xdc, script: 0x22, flags: 0x0},
- 1283: {region: 0x166, script: 0x5b, flags: 0x0},
- 1284: {region: 0x166, script: 0x5b, flags: 0x0},
- 1285: {region: 0xd2, script: 0x5b, flags: 0x0},
- 1286: {region: 0x76, script: 0x5b, flags: 0x0},
- 1287: {region: 0x166, script: 0x5b, flags: 0x0},
- 1288: {region: 0x166, script: 0x5b, flags: 0x0},
- 1289: {region: 0x52, script: 0x5b, flags: 0x0},
- 1290: {region: 0x166, script: 0x5b, flags: 0x0},
- 1291: {region: 0x166, script: 0x5b, flags: 0x0},
- 1292: {region: 0x166, script: 0x5b, flags: 0x0},
- 1293: {region: 0x52, script: 0x5b, flags: 0x0},
- 1294: {region: 0x166, script: 0x5b, flags: 0x0},
- 1295: {region: 0x166, script: 0x5b, flags: 0x0},
- 1296: {region: 0x166, script: 0x5b, flags: 0x0},
- 1297: {region: 0x166, script: 0x5b, flags: 0x0},
- 1298: {region: 0x1, script: 0x3e, flags: 0x0},
- 1299: {region: 0x166, script: 0x5b, flags: 0x0},
- 1300: {region: 0x166, script: 0x5b, flags: 0x0},
- 1301: {region: 0x166, script: 0x5b, flags: 0x0},
- 1302: {region: 0x166, script: 0x5b, flags: 0x0},
- 1303: {region: 0x166, script: 0x5b, flags: 0x0},
- 1304: {region: 0xd7, script: 0x5b, flags: 0x0},
- 1305: {region: 0x166, script: 0x5b, flags: 0x0},
- 1306: {region: 0x166, script: 0x5b, flags: 0x0},
- 1307: {region: 0x166, script: 0x5b, flags: 0x0},
- 1308: {region: 0x41, script: 0x5b, flags: 0x0},
- 1309: {region: 0x166, script: 0x5b, flags: 0x0},
- 1310: {region: 0xd0, script: 0x5b, flags: 0x0},
- 1311: {region: 0x4a, script: 0x3, flags: 0x1},
- 1312: {region: 0x166, script: 0x5b, flags: 0x0},
- 1313: {region: 0x166, script: 0x5b, flags: 0x0},
- 1314: {region: 0x166, script: 0x5b, flags: 0x0},
- 1315: {region: 0x53, script: 0x5b, flags: 0x0},
- 1316: {region: 0x10c, script: 0x5b, flags: 0x0},
- 1318: {region: 0xa9, script: 0x5, flags: 0x0},
- 1319: {region: 0xda, script: 0x5b, flags: 0x0},
- 1320: {region: 0xbb, script: 0xeb, flags: 0x0},
- 1321: {region: 0x4d, script: 0x14, flags: 0x1},
- 1322: {region: 0x53, script: 0x7f, flags: 0x0},
- 1323: {region: 0x166, script: 0x5b, flags: 0x0},
- 1324: {region: 0x123, script: 0x5b, flags: 0x0},
- 1325: {region: 0xd1, script: 0x5b, flags: 0x0},
- 1326: {region: 0x166, script: 0x5b, flags: 0x0},
- 1327: {region: 0x162, script: 0x5b, flags: 0x0},
- 1329: {region: 0x12c, script: 0x5b, flags: 0x0},
-}
-
-// likelyLangList holds lists info associated with likelyLang.
-// Size: 582 bytes, 97 elements
-var likelyLangList = [97]likelyScriptRegion{
- 0: {region: 0x9d, script: 0x7, flags: 0x0},
- 1: {region: 0xa2, script: 0x7a, flags: 0x2},
- 2: {region: 0x11d, script: 0x87, flags: 0x2},
- 3: {region: 0x32, script: 0x5b, flags: 0x0},
- 4: {region: 0x9c, script: 0x5, flags: 0x4},
- 5: {region: 0x9d, script: 0x5, flags: 0x4},
- 6: {region: 0x107, script: 0x20, flags: 0x4},
- 7: {region: 0x9d, script: 0x5, flags: 0x2},
- 8: {region: 0x107, script: 0x20, flags: 0x0},
- 9: {region: 0x38, script: 0x2f, flags: 0x2},
- 10: {region: 0x136, script: 0x5b, flags: 0x0},
- 11: {region: 0x7c, script: 0xd1, flags: 0x2},
- 12: {region: 0x115, script: 0x5b, flags: 0x0},
- 13: {region: 0x85, script: 0x1, flags: 0x2},
- 14: {region: 0x5e, script: 0x1f, flags: 0x0},
- 15: {region: 0x88, script: 0x60, flags: 0x2},
- 16: {region: 0xd7, script: 0x5b, flags: 0x0},
- 17: {region: 0x52, script: 0x5, flags: 0x4},
- 18: {region: 0x10c, script: 0x5, flags: 0x4},
- 19: {region: 0xaf, script: 0x20, flags: 0x0},
- 20: {region: 0x24, script: 0x5, flags: 0x4},
- 21: {region: 0x53, script: 0x5, flags: 0x4},
- 22: {region: 0x9d, script: 0x5, flags: 0x4},
- 23: {region: 0xc6, script: 0x5, flags: 0x4},
- 24: {region: 0x53, script: 0x5, flags: 0x2},
- 25: {region: 0x12c, script: 0x5b, flags: 0x0},
- 26: {region: 0xb1, script: 0x5, flags: 0x4},
- 27: {region: 0x9c, script: 0x5, flags: 0x2},
- 28: {region: 0xa6, script: 0x20, flags: 0x0},
- 29: {region: 0x53, script: 0x5, flags: 0x4},
- 30: {region: 0x12c, script: 0x5b, flags: 0x4},
- 31: {region: 0x53, script: 0x5, flags: 0x2},
- 32: {region: 0x12c, script: 0x5b, flags: 0x2},
- 33: {region: 0xdc, script: 0x22, flags: 0x0},
- 34: {region: 0x9a, script: 0x5e, flags: 0x2},
- 35: {region: 0x84, script: 0x5b, flags: 0x0},
- 36: {region: 0x85, script: 0x7e, flags: 0x4},
- 37: {region: 0x85, script: 0x7e, flags: 0x2},
- 38: {region: 0xc6, script: 0x20, flags: 0x0},
- 39: {region: 0x53, script: 0x71, flags: 0x4},
- 40: {region: 0x53, script: 0x71, flags: 0x2},
- 41: {region: 0xd1, script: 0x5b, flags: 0x0},
- 42: {region: 0x4a, script: 0x5, flags: 0x4},
- 43: {region: 0x96, script: 0x5, flags: 0x4},
- 44: {region: 0x9a, script: 0x36, flags: 0x0},
- 45: {region: 0xe9, script: 0x5, flags: 0x4},
- 46: {region: 0xe9, script: 0x5, flags: 0x2},
- 47: {region: 0x9d, script: 0x8d, flags: 0x0},
- 48: {region: 0x53, script: 0x8e, flags: 0x2},
- 49: {region: 0xbb, script: 0xeb, flags: 0x0},
- 50: {region: 0xda, script: 0x5b, flags: 0x4},
- 51: {region: 0xe9, script: 0x5, flags: 0x0},
- 52: {region: 0x9a, script: 0x22, flags: 0x2},
- 53: {region: 0x9a, script: 0x50, flags: 0x2},
- 54: {region: 0x9a, script: 0xd5, flags: 0x2},
- 55: {region: 0x106, script: 0x20, flags: 0x0},
- 56: {region: 0xbe, script: 0x5b, flags: 0x4},
- 57: {region: 0x105, script: 0x5b, flags: 0x4},
- 58: {region: 0x107, script: 0x5b, flags: 0x4},
- 59: {region: 0x12c, script: 0x5b, flags: 0x4},
- 60: {region: 0x125, script: 0x20, flags: 0x0},
- 61: {region: 0xe9, script: 0x5, flags: 0x4},
- 62: {region: 0xe9, script: 0x5, flags: 0x2},
- 63: {region: 0x53, script: 0x5, flags: 0x0},
- 64: {region: 0xaf, script: 0x20, flags: 0x4},
- 65: {region: 0xc6, script: 0x20, flags: 0x4},
- 66: {region: 0xaf, script: 0x20, flags: 0x2},
- 67: {region: 0x9a, script: 0xe, flags: 0x0},
- 68: {region: 0xdc, script: 0x22, flags: 0x4},
- 69: {region: 0xdc, script: 0x22, flags: 0x2},
- 70: {region: 0x138, script: 0x5b, flags: 0x0},
- 71: {region: 0x24, script: 0x5, flags: 0x4},
- 72: {region: 0x53, script: 0x20, flags: 0x4},
- 73: {region: 0x24, script: 0x5, flags: 0x2},
- 74: {region: 0x8e, script: 0x3c, flags: 0x0},
- 75: {region: 0x53, script: 0x3b, flags: 0x4},
- 76: {region: 0x53, script: 0x3b, flags: 0x2},
- 77: {region: 0x53, script: 0x3b, flags: 0x0},
- 78: {region: 0x2f, script: 0x3c, flags: 0x4},
- 79: {region: 0x3e, script: 0x3c, flags: 0x4},
- 80: {region: 0x7c, script: 0x3c, flags: 0x4},
- 81: {region: 0x7f, script: 0x3c, flags: 0x4},
- 82: {region: 0x8e, script: 0x3c, flags: 0x4},
- 83: {region: 0x96, script: 0x3c, flags: 0x4},
- 84: {region: 0xc7, script: 0x3c, flags: 0x4},
- 85: {region: 0xd1, script: 0x3c, flags: 0x4},
- 86: {region: 0xe3, script: 0x3c, flags: 0x4},
- 87: {region: 0xe6, script: 0x3c, flags: 0x4},
- 88: {region: 0xe8, script: 0x3c, flags: 0x4},
- 89: {region: 0x117, script: 0x3c, flags: 0x4},
- 90: {region: 0x124, script: 0x3c, flags: 0x4},
- 91: {region: 0x12f, script: 0x3c, flags: 0x4},
- 92: {region: 0x136, script: 0x3c, flags: 0x4},
- 93: {region: 0x13f, script: 0x3c, flags: 0x4},
- 94: {region: 0x12f, script: 0x11, flags: 0x2},
- 95: {region: 0x12f, script: 0x37, flags: 0x2},
- 96: {region: 0x12f, script: 0x3c, flags: 0x2},
-}
-
-type likelyLangScript struct {
- lang uint16
- script uint16
- 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: 2154 bytes, 359 elements
-var likelyRegion = [359]likelyLangScript{
- 34: {lang: 0xd7, script: 0x5b, flags: 0x0},
- 35: {lang: 0x3a, script: 0x5, flags: 0x0},
- 36: {lang: 0x0, script: 0x2, flags: 0x1},
- 39: {lang: 0x2, script: 0x2, flags: 0x1},
- 40: {lang: 0x4, script: 0x2, flags: 0x1},
- 42: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 43: {lang: 0x0, script: 0x5b, flags: 0x0},
- 44: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 45: {lang: 0x41b, script: 0x5b, flags: 0x0},
- 46: {lang: 0x10d, script: 0x5b, flags: 0x0},
- 48: {lang: 0x367, script: 0x5b, flags: 0x0},
- 49: {lang: 0x444, script: 0x5b, flags: 0x0},
- 50: {lang: 0x58, script: 0x5b, flags: 0x0},
- 51: {lang: 0x6, script: 0x2, flags: 0x1},
- 53: {lang: 0xa5, script: 0xe, flags: 0x0},
- 54: {lang: 0x367, script: 0x5b, flags: 0x0},
- 55: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 56: {lang: 0x7e, script: 0x20, flags: 0x0},
- 57: {lang: 0x3a, script: 0x5, flags: 0x0},
- 58: {lang: 0x3d9, script: 0x5b, flags: 0x0},
- 59: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 60: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 62: {lang: 0x31f, script: 0x5b, flags: 0x0},
- 63: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 64: {lang: 0x3a1, script: 0x5b, flags: 0x0},
- 65: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 67: {lang: 0x8, script: 0x2, flags: 0x1},
- 69: {lang: 0x0, script: 0x5b, flags: 0x0},
- 71: {lang: 0x71, script: 0x20, flags: 0x0},
- 73: {lang: 0x512, script: 0x3e, flags: 0x2},
- 74: {lang: 0x31f, script: 0x5, flags: 0x2},
- 75: {lang: 0x445, script: 0x5b, flags: 0x0},
- 76: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 77: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 78: {lang: 0x10d, script: 0x5b, flags: 0x0},
- 79: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 81: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 82: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 83: {lang: 0xa, script: 0x4, flags: 0x1},
- 84: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 85: {lang: 0x0, script: 0x5b, flags: 0x0},
- 87: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 90: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 91: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 92: {lang: 0x3a1, script: 0x5b, flags: 0x0},
- 94: {lang: 0xe, script: 0x2, flags: 0x1},
- 95: {lang: 0xfa, script: 0x5b, flags: 0x0},
- 97: {lang: 0x10d, script: 0x5b, flags: 0x0},
- 99: {lang: 0x1, script: 0x5b, flags: 0x0},
- 100: {lang: 0x101, script: 0x5b, flags: 0x0},
- 102: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 104: {lang: 0x10, script: 0x2, flags: 0x1},
- 105: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 106: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 107: {lang: 0x140, script: 0x5b, flags: 0x0},
- 108: {lang: 0x3a, script: 0x5, flags: 0x0},
- 109: {lang: 0x3a, script: 0x5, flags: 0x0},
- 110: {lang: 0x46f, script: 0x2c, flags: 0x0},
- 111: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 112: {lang: 0x12, script: 0x2, flags: 0x1},
- 114: {lang: 0x10d, script: 0x5b, flags: 0x0},
- 115: {lang: 0x151, script: 0x5b, flags: 0x0},
- 116: {lang: 0x1c0, script: 0x22, flags: 0x2},
- 119: {lang: 0x158, script: 0x5b, flags: 0x0},
- 121: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 123: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 124: {lang: 0x14, script: 0x2, flags: 0x1},
- 126: {lang: 0x16, script: 0x3, flags: 0x1},
- 127: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 129: {lang: 0x21, script: 0x5b, flags: 0x0},
- 131: {lang: 0x245, script: 0x5b, flags: 0x0},
- 133: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 134: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 135: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 136: {lang: 0x19, script: 0x2, flags: 0x1},
- 137: {lang: 0x0, script: 0x5b, flags: 0x0},
- 138: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 140: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 142: {lang: 0x529, script: 0x3c, flags: 0x0},
- 143: {lang: 0x0, script: 0x5b, flags: 0x0},
- 144: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 145: {lang: 0x1d1, script: 0x5b, flags: 0x0},
- 146: {lang: 0x1d4, script: 0x5b, flags: 0x0},
- 147: {lang: 0x1d5, script: 0x5b, flags: 0x0},
- 149: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 150: {lang: 0x1b, script: 0x2, flags: 0x1},
- 152: {lang: 0x1bc, script: 0x3e, flags: 0x0},
- 154: {lang: 0x1d, script: 0x3, flags: 0x1},
- 156: {lang: 0x3a, script: 0x5, flags: 0x0},
- 157: {lang: 0x20, script: 0x2, flags: 0x1},
- 158: {lang: 0x1f8, script: 0x5b, flags: 0x0},
- 159: {lang: 0x1f9, script: 0x5b, flags: 0x0},
- 162: {lang: 0x3a, script: 0x5, flags: 0x0},
- 163: {lang: 0x200, script: 0x49, flags: 0x0},
- 165: {lang: 0x445, script: 0x5b, flags: 0x0},
- 166: {lang: 0x28a, script: 0x20, flags: 0x0},
- 167: {lang: 0x22, script: 0x3, flags: 0x1},
- 169: {lang: 0x25, script: 0x2, flags: 0x1},
- 171: {lang: 0x254, script: 0x54, flags: 0x0},
- 172: {lang: 0x254, script: 0x54, flags: 0x0},
- 173: {lang: 0x3a, script: 0x5, flags: 0x0},
- 175: {lang: 0x3e2, script: 0x20, flags: 0x0},
- 176: {lang: 0x27, script: 0x2, flags: 0x1},
- 177: {lang: 0x3a, script: 0x5, flags: 0x0},
- 179: {lang: 0x10d, script: 0x5b, flags: 0x0},
- 180: {lang: 0x40c, script: 0xd6, flags: 0x0},
- 182: {lang: 0x43b, script: 0x5b, flags: 0x0},
- 183: {lang: 0x2c0, script: 0x5b, flags: 0x0},
- 184: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 185: {lang: 0x2c7, script: 0x5b, flags: 0x0},
- 186: {lang: 0x3a, script: 0x5, flags: 0x0},
- 187: {lang: 0x29, script: 0x2, flags: 0x1},
- 188: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 189: {lang: 0x2b, script: 0x2, flags: 0x1},
- 190: {lang: 0x432, script: 0x5b, flags: 0x0},
- 191: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 192: {lang: 0x2f1, script: 0x5b, flags: 0x0},
- 195: {lang: 0x2d, script: 0x2, flags: 0x1},
- 196: {lang: 0xa0, script: 0x5b, flags: 0x0},
- 197: {lang: 0x2f, script: 0x2, flags: 0x1},
- 198: {lang: 0x31, script: 0x2, flags: 0x1},
- 199: {lang: 0x33, script: 0x2, flags: 0x1},
- 201: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 202: {lang: 0x35, script: 0x2, flags: 0x1},
- 204: {lang: 0x320, script: 0x5b, flags: 0x0},
- 205: {lang: 0x37, script: 0x3, flags: 0x1},
- 206: {lang: 0x128, script: 0xed, flags: 0x0},
- 208: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 209: {lang: 0x31f, script: 0x5b, flags: 0x0},
- 210: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 211: {lang: 0x16, script: 0x5b, flags: 0x0},
- 212: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 213: {lang: 0x1b4, script: 0x5b, flags: 0x0},
- 215: {lang: 0x1b4, script: 0x5, flags: 0x2},
- 217: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 218: {lang: 0x367, script: 0x5b, flags: 0x0},
- 219: {lang: 0x347, script: 0x5b, flags: 0x0},
- 220: {lang: 0x351, script: 0x22, flags: 0x0},
- 226: {lang: 0x3a, script: 0x5, flags: 0x0},
- 227: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 229: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 230: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 231: {lang: 0x486, script: 0x5b, flags: 0x0},
- 232: {lang: 0x153, script: 0x5b, flags: 0x0},
- 233: {lang: 0x3a, script: 0x3, flags: 0x1},
- 234: {lang: 0x3b3, script: 0x5b, flags: 0x0},
- 235: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 237: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 238: {lang: 0x3a, script: 0x5, flags: 0x0},
- 239: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 241: {lang: 0x3a2, script: 0x5b, flags: 0x0},
- 242: {lang: 0x194, script: 0x5b, flags: 0x0},
- 244: {lang: 0x3a, script: 0x5, flags: 0x0},
- 259: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 261: {lang: 0x3d, script: 0x2, flags: 0x1},
- 262: {lang: 0x432, script: 0x20, flags: 0x0},
- 263: {lang: 0x3f, script: 0x2, flags: 0x1},
- 264: {lang: 0x3e5, script: 0x5b, flags: 0x0},
- 265: {lang: 0x3a, script: 0x5, flags: 0x0},
- 267: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 268: {lang: 0x3a, script: 0x5, flags: 0x0},
- 269: {lang: 0x41, script: 0x2, flags: 0x1},
- 272: {lang: 0x416, script: 0x5b, flags: 0x0},
- 273: {lang: 0x347, script: 0x5b, flags: 0x0},
- 274: {lang: 0x43, script: 0x2, flags: 0x1},
- 276: {lang: 0x1f9, script: 0x5b, flags: 0x0},
- 277: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 278: {lang: 0x429, script: 0x5b, flags: 0x0},
- 279: {lang: 0x367, script: 0x5b, flags: 0x0},
- 281: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 283: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 285: {lang: 0x45, script: 0x2, flags: 0x1},
- 289: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 290: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 291: {lang: 0x47, script: 0x2, flags: 0x1},
- 292: {lang: 0x49, script: 0x3, flags: 0x1},
- 293: {lang: 0x4c, script: 0x2, flags: 0x1},
- 294: {lang: 0x477, script: 0x5b, flags: 0x0},
- 295: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 296: {lang: 0x476, script: 0x5b, flags: 0x0},
- 297: {lang: 0x4e, script: 0x2, flags: 0x1},
- 298: {lang: 0x482, script: 0x5b, flags: 0x0},
- 300: {lang: 0x50, script: 0x4, flags: 0x1},
- 302: {lang: 0x4a0, script: 0x5b, flags: 0x0},
- 303: {lang: 0x54, script: 0x2, flags: 0x1},
- 304: {lang: 0x445, script: 0x5b, flags: 0x0},
- 305: {lang: 0x56, script: 0x3, flags: 0x1},
- 306: {lang: 0x445, script: 0x5b, flags: 0x0},
- 310: {lang: 0x512, script: 0x3e, flags: 0x2},
- 311: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 312: {lang: 0x4bc, script: 0x5b, flags: 0x0},
- 313: {lang: 0x1f9, script: 0x5b, flags: 0x0},
- 316: {lang: 0x13e, script: 0x5b, flags: 0x0},
- 319: {lang: 0x4c3, script: 0x5b, flags: 0x0},
- 320: {lang: 0x8a, script: 0x5b, flags: 0x0},
- 321: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 323: {lang: 0x41b, script: 0x5b, flags: 0x0},
- 334: {lang: 0x59, script: 0x2, flags: 0x1},
- 351: {lang: 0x3a, script: 0x5, flags: 0x0},
- 352: {lang: 0x5b, script: 0x2, flags: 0x1},
- 357: {lang: 0x423, script: 0x5b, flags: 0x0},
-}
-
-// likelyRegionList holds lists info associated with likelyRegion.
-// Size: 558 bytes, 93 elements
-var likelyRegionList = [93]likelyLangScript{
- 0: {lang: 0x148, script: 0x5, flags: 0x0},
- 1: {lang: 0x476, script: 0x5b, flags: 0x0},
- 2: {lang: 0x431, script: 0x5b, flags: 0x0},
- 3: {lang: 0x2ff, script: 0x20, flags: 0x0},
- 4: {lang: 0x1d7, script: 0x8, flags: 0x0},
- 5: {lang: 0x274, script: 0x5b, flags: 0x0},
- 6: {lang: 0xb7, script: 0x5b, flags: 0x0},
- 7: {lang: 0x432, script: 0x20, flags: 0x0},
- 8: {lang: 0x12d, script: 0xef, flags: 0x0},
- 9: {lang: 0x351, script: 0x22, flags: 0x0},
- 10: {lang: 0x529, script: 0x3b, flags: 0x0},
- 11: {lang: 0x4ac, script: 0x5, flags: 0x0},
- 12: {lang: 0x523, script: 0x5b, flags: 0x0},
- 13: {lang: 0x29a, script: 0xee, flags: 0x0},
- 14: {lang: 0x136, script: 0x34, flags: 0x0},
- 15: {lang: 0x48a, script: 0x5b, flags: 0x0},
- 16: {lang: 0x3a, script: 0x5, flags: 0x0},
- 17: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 18: {lang: 0x27, script: 0x2c, flags: 0x0},
- 19: {lang: 0x139, script: 0x5b, flags: 0x0},
- 20: {lang: 0x26a, script: 0x5, flags: 0x2},
- 21: {lang: 0x512, script: 0x3e, flags: 0x2},
- 22: {lang: 0x210, script: 0x2e, flags: 0x0},
- 23: {lang: 0x5, script: 0x20, flags: 0x0},
- 24: {lang: 0x274, script: 0x5b, flags: 0x0},
- 25: {lang: 0x136, script: 0x34, flags: 0x0},
- 26: {lang: 0x2ff, script: 0x20, flags: 0x0},
- 27: {lang: 0x1e1, script: 0x5b, flags: 0x0},
- 28: {lang: 0x31f, script: 0x5, flags: 0x0},
- 29: {lang: 0x1be, script: 0x22, flags: 0x0},
- 30: {lang: 0x4b4, script: 0x5, flags: 0x0},
- 31: {lang: 0x236, script: 0x76, flags: 0x0},
- 32: {lang: 0x148, script: 0x5, flags: 0x0},
- 33: {lang: 0x476, script: 0x5b, flags: 0x0},
- 34: {lang: 0x24a, script: 0x4f, flags: 0x0},
- 35: {lang: 0xe6, script: 0x5, flags: 0x0},
- 36: {lang: 0x226, script: 0xee, flags: 0x0},
- 37: {lang: 0x3a, script: 0x5, flags: 0x0},
- 38: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 39: {lang: 0x2b8, script: 0x58, flags: 0x0},
- 40: {lang: 0x226, script: 0xee, flags: 0x0},
- 41: {lang: 0x3a, script: 0x5, flags: 0x0},
- 42: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 43: {lang: 0x3dc, script: 0x5b, flags: 0x0},
- 44: {lang: 0x4ae, script: 0x20, flags: 0x0},
- 45: {lang: 0x2ff, script: 0x20, flags: 0x0},
- 46: {lang: 0x431, script: 0x5b, flags: 0x0},
- 47: {lang: 0x331, script: 0x76, flags: 0x0},
- 48: {lang: 0x213, script: 0x5b, flags: 0x0},
- 49: {lang: 0x30b, script: 0x20, flags: 0x0},
- 50: {lang: 0x242, script: 0x5, flags: 0x0},
- 51: {lang: 0x529, script: 0x3c, flags: 0x0},
- 52: {lang: 0x3c0, script: 0x5b, flags: 0x0},
- 53: {lang: 0x3a, script: 0x5, flags: 0x0},
- 54: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 55: {lang: 0x2ed, script: 0x5b, flags: 0x0},
- 56: {lang: 0x4b4, script: 0x5, flags: 0x0},
- 57: {lang: 0x88, script: 0x22, flags: 0x0},
- 58: {lang: 0x4b4, script: 0x5, flags: 0x0},
- 59: {lang: 0x4b4, script: 0x5, flags: 0x0},
- 60: {lang: 0xbe, script: 0x22, flags: 0x0},
- 61: {lang: 0x3dc, script: 0x5b, flags: 0x0},
- 62: {lang: 0x7e, script: 0x20, flags: 0x0},
- 63: {lang: 0x3e2, script: 0x20, flags: 0x0},
- 64: {lang: 0x267, script: 0x5b, flags: 0x0},
- 65: {lang: 0x444, script: 0x5b, flags: 0x0},
- 66: {lang: 0x512, script: 0x3e, flags: 0x0},
- 67: {lang: 0x412, script: 0x5b, flags: 0x0},
- 68: {lang: 0x4ae, script: 0x20, flags: 0x0},
- 69: {lang: 0x3a, script: 0x5, flags: 0x0},
- 70: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 71: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 72: {lang: 0x35, script: 0x5, flags: 0x0},
- 73: {lang: 0x46b, script: 0xee, flags: 0x0},
- 74: {lang: 0x2ec, script: 0x5, flags: 0x0},
- 75: {lang: 0x30f, script: 0x76, flags: 0x0},
- 76: {lang: 0x467, script: 0x20, flags: 0x0},
- 77: {lang: 0x148, script: 0x5, flags: 0x0},
- 78: {lang: 0x3a, script: 0x5, flags: 0x0},
- 79: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 80: {lang: 0x48a, script: 0x5b, flags: 0x0},
- 81: {lang: 0x58, script: 0x5, flags: 0x0},
- 82: {lang: 0x219, script: 0x20, flags: 0x0},
- 83: {lang: 0x81, script: 0x34, flags: 0x0},
- 84: {lang: 0x529, script: 0x3c, flags: 0x0},
- 85: {lang: 0x48c, script: 0x5b, flags: 0x0},
- 86: {lang: 0x4ae, script: 0x20, flags: 0x0},
- 87: {lang: 0x512, script: 0x3e, flags: 0x0},
- 88: {lang: 0x3b3, script: 0x5b, flags: 0x0},
- 89: {lang: 0x431, script: 0x5b, flags: 0x0},
- 90: {lang: 0x432, script: 0x20, flags: 0x0},
- 91: {lang: 0x15e, script: 0x5b, flags: 0x0},
- 92: {lang: 0x446, script: 0x5, flags: 0x0},
-}
-
-type likelyTag struct {
- lang uint16
- region uint16
- script uint16
-}
-
-// Size: 198 bytes, 33 elements
-var likelyRegionGroup = [33]likelyTag{
- 1: {lang: 0x139, region: 0xd7, script: 0x5b},
- 2: {lang: 0x139, region: 0x136, script: 0x5b},
- 3: {lang: 0x3c0, region: 0x41, script: 0x5b},
- 4: {lang: 0x139, region: 0x2f, script: 0x5b},
- 5: {lang: 0x139, region: 0xd7, script: 0x5b},
- 6: {lang: 0x13e, region: 0xd0, script: 0x5b},
- 7: {lang: 0x445, region: 0x130, script: 0x5b},
- 8: {lang: 0x3a, region: 0x6c, script: 0x5},
- 9: {lang: 0x445, region: 0x4b, script: 0x5b},
- 10: {lang: 0x139, region: 0x162, script: 0x5b},
- 11: {lang: 0x139, region: 0x136, script: 0x5b},
- 12: {lang: 0x139, region: 0x136, script: 0x5b},
- 13: {lang: 0x13e, region: 0x5a, script: 0x5b},
- 14: {lang: 0x529, region: 0x53, script: 0x3b},
- 15: {lang: 0x1be, region: 0x9a, script: 0x22},
- 16: {lang: 0x1e1, region: 0x96, script: 0x5b},
- 17: {lang: 0x1f9, region: 0x9f, script: 0x5b},
- 18: {lang: 0x139, region: 0x2f, script: 0x5b},
- 19: {lang: 0x139, region: 0xe7, script: 0x5b},
- 20: {lang: 0x139, region: 0x8b, script: 0x5b},
- 21: {lang: 0x41b, region: 0x143, script: 0x5b},
- 22: {lang: 0x529, region: 0x53, script: 0x3b},
- 23: {lang: 0x4bc, region: 0x138, script: 0x5b},
- 24: {lang: 0x3a, region: 0x109, script: 0x5},
- 25: {lang: 0x3e2, region: 0x107, script: 0x20},
- 26: {lang: 0x3e2, region: 0x107, script: 0x20},
- 27: {lang: 0x139, region: 0x7c, script: 0x5b},
- 28: {lang: 0x10d, region: 0x61, script: 0x5b},
- 29: {lang: 0x139, region: 0xd7, script: 0x5b},
- 30: {lang: 0x13e, region: 0x1f, script: 0x5b},
- 31: {lang: 0x139, region: 0x9b, script: 0x5b},
- 32: {lang: 0x139, region: 0x7c, script: 0x5b},
-}
-
-// Size: 264 bytes, 33 elements
-var regionContainment = [33]uint64{
- // Entry 0 - 1F
- 0x00000001ffffffff, 0x00000000200007a2, 0x0000000000003044, 0x0000000000000008,
- 0x00000000803c0010, 0x0000000000000020, 0x0000000000000040, 0x0000000000000080,
- 0x0000000000000100, 0x0000000000000200, 0x0000000000000400, 0x000000004000384c,
- 0x0000000000001000, 0x0000000000002000, 0x0000000000004000, 0x0000000000008000,
- 0x0000000000010000, 0x0000000000020000, 0x0000000000040000, 0x0000000000080000,
- 0x0000000000100000, 0x0000000000200000, 0x0000000001c1c000, 0x0000000000800000,
- 0x0000000001000000, 0x000000001e020000, 0x0000000004000000, 0x0000000008000000,
- 0x0000000010000000, 0x00000000200006a0, 0x0000000040002048, 0x0000000080000000,
- // Entry 20 - 3F
- 0x0000000100000000,
-}
-
-// 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: 359 bytes, 359 elements
-var regionInclusion = [359]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, 0x1e,
- 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x26, 0x23,
- 0x24, 0x26, 0x27, 0x22, 0x28, 0x29, 0x2a, 0x2b,
- 0x26, 0x2c, 0x24, 0x23, 0x26, 0x25, 0x2a, 0x2d,
- 0x2e, 0x24, 0x2f, 0x2d, 0x26, 0x30, 0x31, 0x28,
- // Entry 40 - 7F
- 0x26, 0x28, 0x26, 0x25, 0x31, 0x22, 0x32, 0x33,
- 0x34, 0x30, 0x22, 0x27, 0x27, 0x27, 0x35, 0x2d,
- 0x29, 0x28, 0x27, 0x36, 0x28, 0x22, 0x21, 0x34,
- 0x23, 0x21, 0x26, 0x2d, 0x26, 0x22, 0x37, 0x2e,
- 0x35, 0x2a, 0x22, 0x2f, 0x38, 0x26, 0x26, 0x21,
- 0x39, 0x39, 0x28, 0x38, 0x39, 0x39, 0x2f, 0x3a,
- 0x2f, 0x20, 0x21, 0x38, 0x3b, 0x28, 0x3c, 0x2c,
- 0x21, 0x2a, 0x35, 0x27, 0x38, 0x26, 0x24, 0x28,
- // Entry 80 - BF
- 0x2c, 0x2d, 0x23, 0x30, 0x2d, 0x2d, 0x26, 0x27,
- 0x3a, 0x22, 0x34, 0x3c, 0x2d, 0x28, 0x36, 0x22,
- 0x34, 0x3a, 0x26, 0x2e, 0x21, 0x39, 0x31, 0x38,
- 0x24, 0x2c, 0x25, 0x22, 0x24, 0x25, 0x2c, 0x3a,
- 0x2c, 0x26, 0x24, 0x36, 0x21, 0x2f, 0x3d, 0x31,
- 0x3c, 0x2f, 0x26, 0x36, 0x36, 0x24, 0x26, 0x3d,
- 0x31, 0x24, 0x26, 0x35, 0x25, 0x2d, 0x32, 0x38,
- 0x2a, 0x38, 0x39, 0x39, 0x35, 0x33, 0x23, 0x26,
- // Entry C0 - FF
- 0x2f, 0x3c, 0x21, 0x23, 0x2d, 0x31, 0x36, 0x36,
- 0x3c, 0x26, 0x2d, 0x26, 0x3a, 0x2f, 0x25, 0x2f,
- 0x34, 0x31, 0x2f, 0x32, 0x3b, 0x2d, 0x2b, 0x2d,
- 0x21, 0x34, 0x2a, 0x2c, 0x25, 0x21, 0x3c, 0x24,
- 0x29, 0x2b, 0x24, 0x34, 0x21, 0x28, 0x29, 0x3b,
- 0x31, 0x25, 0x2e, 0x30, 0x29, 0x26, 0x24, 0x3a,
- 0x21, 0x3c, 0x28, 0x21, 0x24, 0x21, 0x21, 0x1f,
- 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
- // Entry 100 - 13F
- 0x21, 0x21, 0x21, 0x2f, 0x21, 0x2e, 0x23, 0x33,
- 0x2f, 0x24, 0x3b, 0x2f, 0x39, 0x38, 0x31, 0x2d,
- 0x3a, 0x2c, 0x2e, 0x2d, 0x23, 0x2d, 0x2f, 0x28,
- 0x2f, 0x27, 0x33, 0x34, 0x26, 0x24, 0x32, 0x22,
- 0x26, 0x27, 0x22, 0x2d, 0x31, 0x3d, 0x29, 0x31,
- 0x3d, 0x39, 0x29, 0x31, 0x24, 0x26, 0x29, 0x36,
- 0x2f, 0x33, 0x2f, 0x21, 0x22, 0x21, 0x30, 0x28,
- 0x3d, 0x23, 0x26, 0x21, 0x28, 0x26, 0x26, 0x31,
- // Entry 140 - 17F
- 0x3b, 0x29, 0x21, 0x29, 0x21, 0x21, 0x21, 0x21,
- 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x21,
- 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
- 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x24,
- 0x2f, 0x23, 0x32, 0x2f, 0x27, 0x2f, 0x21,
-}
-
-// 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: 584 bytes, 73 elements
-var regionInclusionBits = [73]uint64{
- // Entry 0 - 1F
- 0x0000000102400813, 0x00000000200007a3, 0x0000000000003844, 0x0000000040000808,
- 0x00000000803c0011, 0x0000000020000022, 0x0000000040000844, 0x0000000020000082,
- 0x0000000000000102, 0x0000000020000202, 0x0000000020000402, 0x000000004000384d,
- 0x0000000000001804, 0x0000000040002804, 0x0000000000404000, 0x0000000000408000,
- 0x0000000000410000, 0x0000000002020000, 0x0000000000040010, 0x0000000000080010,
- 0x0000000000100010, 0x0000000000200010, 0x0000000001c1c001, 0x0000000000c00000,
- 0x0000000001400000, 0x000000001e020001, 0x0000000006000000, 0x000000000a000000,
- 0x0000000012000000, 0x00000000200006a2, 0x0000000040002848, 0x0000000080000010,
- // Entry 20 - 3F
- 0x0000000100000001, 0x0000000000000001, 0x0000000080000000, 0x0000000000020000,
- 0x0000000001000000, 0x0000000000008000, 0x0000000000002000, 0x0000000000000200,
- 0x0000000000000008, 0x0000000000200000, 0x0000000110000000, 0x0000000000040000,
- 0x0000000008000000, 0x0000000000000020, 0x0000000104000000, 0x0000000000000080,
- 0x0000000000001000, 0x0000000000010000, 0x0000000000000400, 0x0000000004000000,
- 0x0000000000000040, 0x0000000010000000, 0x0000000000004000, 0x0000000101000000,
- 0x0000000108000000, 0x0000000000000100, 0x0000000100020000, 0x0000000000080000,
- 0x0000000000100000, 0x0000000000800000, 0x00000001ffffffff, 0x0000000122400fb3,
- // Entry 40 - 5F
- 0x00000001827c0813, 0x000000014240385f, 0x0000000103c1c813, 0x000000011e420813,
- 0x0000000112000001, 0x0000000106000001, 0x0000000101400001, 0x000000010a000001,
- 0x0000000102020001,
-}
-
-// regionInclusionNext marks, for each entry in regionInclusionBits, the set of
-// all groups that are reachable from the groups set in the respective entry.
-// Size: 73 bytes, 73 elements
-var regionInclusionNext = [73]uint8{
- // Entry 0 - 3F
- 0x3e, 0x3f, 0x0b, 0x0b, 0x40, 0x01, 0x0b, 0x01,
- 0x01, 0x01, 0x01, 0x41, 0x0b, 0x0b, 0x16, 0x16,
- 0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x42, 0x16,
- 0x16, 0x43, 0x19, 0x19, 0x19, 0x01, 0x0b, 0x04,
- 0x00, 0x00, 0x1f, 0x11, 0x18, 0x0f, 0x0d, 0x09,
- 0x03, 0x15, 0x44, 0x12, 0x1b, 0x05, 0x45, 0x07,
- 0x0c, 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x46,
- 0x47, 0x08, 0x48, 0x13, 0x14, 0x17, 0x3e, 0x3e,
- // Entry 40 - 7F
- 0x3e, 0x3e, 0x3e, 0x3e, 0x43, 0x43, 0x42, 0x43,
- 0x43,
-}
-
-type parentRel struct {
- lang uint16
- script uint16
- maxScript uint16
- toRegion uint16
- fromRegion []uint16
-}
-
-// Size: 414 bytes, 5 elements
-var parents = [5]parentRel{
- 0: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5d, 0x5e, 0x62, 0x65, 0x6e, 0x74, 0x75, 0x76, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x84, 0x8d, 0x8e, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0xa0, 0xa1, 0xa5, 0xa8, 0xaa, 0xae, 0xb2, 0xb5, 0xb6, 0xc0, 0xc7, 0xcb, 0xcc, 0xcd, 0xcf, 0xd1, 0xd3, 0xd6, 0xd7, 0xde, 0xe0, 0xe1, 0xe7, 0xe8, 0xe9, 0xec, 0xf1, 0x108, 0x10a, 0x10b, 0x10c, 0x10e, 0x10f, 0x113, 0x118, 0x11c, 0x11e, 0x120, 0x126, 0x12a, 0x12d, 0x12e, 0x130, 0x132, 0x13a, 0x13d, 0x140, 0x143, 0x162, 0x163, 0x165}},
- 1: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x61, 0x64, 0x73, 0xda, 0x10d, 0x110}},
- 2: {lang: 0x13e, script: 0x0, maxScript: 0x5b, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x57, 0x5a, 0x66, 0x6a, 0x8a, 0x90, 0xd0, 0xd9, 0xe3, 0xe5, 0xed, 0xf2, 0x11b, 0x136, 0x137, 0x13c}},
- 3: {lang: 0x3c0, script: 0x0, maxScript: 0x5b, toRegion: 0xef, fromRegion: []uint16{0x2a, 0x4e, 0x5b, 0x87, 0x8c, 0xb8, 0xc7, 0xd2, 0x119, 0x127}},
- 4: {lang: 0x529, script: 0x3c, maxScript: 0x3c, toRegion: 0x8e, fromRegion: []uint16{0xc7}},
-}
-
-// Total table size 30466 bytes (29KiB); checksum: 7544152B
diff --git a/vendor/golang.org/x/text/internal/language/tags.go b/vendor/golang.org/x/text/internal/language/tags.go
deleted file mode 100644
index e7afd31..0000000
--- a/vendor/golang.org/x/text/internal/language/tags.go
+++ /dev/null
@@ -1,48 +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 language
-
-// 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
-}
-
-// MustParseBase is like ParseBase, but panics if the given base cannot be parsed.
-// It simplifies safe initialization of Base values.
-func MustParseBase(s string) Language {
- 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
-}
-
-// Und is the root language.
-var Und Tag
diff --git a/vendor/golang.org/x/text/internal/match.go b/vendor/golang.org/x/text/internal/match.go
deleted file mode 100644
index 1cc004a..0000000
--- a/vendor/golang.org/x/text/internal/match.go
+++ /dev/null
@@ -1,67 +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 internal
-
-// This file contains matchers that implement CLDR inheritance.
-//
-// See https://unicode.org/reports/tr35/#Locale_Inheritance.
-//
-// Some of the inheritance described in this document is already handled by
-// the cldr package.
-
-import (
- "golang.org/x/text/language"
-)
-
-// TODO: consider if (some of the) matching algorithm needs to be public after
-// getting some feel about what is generic and what is specific.
-
-// NewInheritanceMatcher returns a matcher that matches based on the inheritance
-// chain.
-//
-// The matcher uses canonicalization and the parent relationship to find a
-// match. The resulting match will always be either Und or a language with the
-// same language and script as the requested language. It will not match
-// languages for which there is understood to be mutual or one-directional
-// intelligibility.
-//
-// A Match will indicate an Exact match if the language matches after
-// canonicalization and High if the matched tag is a parent.
-func NewInheritanceMatcher(t []language.Tag) *InheritanceMatcher {
- tags := &InheritanceMatcher{make(map[language.Tag]int)}
- for i, tag := range t {
- ct, err := language.All.Canonicalize(tag)
- if err != nil {
- ct = tag
- }
- tags.index[ct] = i
- }
- return tags
-}
-
-type InheritanceMatcher struct {
- index map[language.Tag]int
-}
-
-func (m InheritanceMatcher) Match(want ...language.Tag) (language.Tag, int, language.Confidence) {
- for _, t := range want {
- ct, err := language.All.Canonicalize(t)
- if err != nil {
- ct = t
- }
- conf := language.Exact
- for {
- if index, ok := m.index[ct]; ok {
- return ct, index, conf
- }
- if ct == language.Und {
- break
- }
- ct = ct.Parent()
- conf = language.High
- }
- }
- return language.Und, 0, language.No
-}
diff --git a/vendor/golang.org/x/text/internal/number/common.go b/vendor/golang.org/x/text/internal/number/common.go
deleted file mode 100644
index a6e9c8e..0000000
--- a/vendor/golang.org/x/text/internal/number/common.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package number
-
-import (
- "unicode/utf8"
-
- "golang.org/x/text/internal/language/compact"
-)
-
-// A system identifies a CLDR numbering system.
-type system byte
-
-type systemData struct {
- id system
- digitSize byte // number of UTF-8 bytes per digit
- zero [utf8.UTFMax]byte // UTF-8 sequence of zero digit.
-}
-
-// A SymbolType identifies a symbol of a specific kind.
-type SymbolType int
-
-const (
- SymDecimal SymbolType = iota
- SymGroup
- SymList
- SymPercentSign
- SymPlusSign
- SymMinusSign
- SymExponential
- SymSuperscriptingExponent
- SymPerMille
- SymInfinity
- SymNan
- SymTimeSeparator
-
- NumSymbolTypes
-)
-
-const hasNonLatnMask = 0x8000
-
-// symOffset is an offset into altSymData if the bit indicated by hasNonLatnMask
-// is not 0 (with this bit masked out), and an offset into symIndex otherwise.
-//
-// TODO: this type can be a byte again if we use an indirection into altsymData
-// and introduce an alt -> offset slice (the length of this will be number of
-// alternatives plus 1). This also allows getting rid of the compactTag field
-// in altSymData. In total this will save about 1K.
-type symOffset uint16
-
-type altSymData struct {
- compactTag compact.ID
- symIndex symOffset
- system system
-}
diff --git a/vendor/golang.org/x/text/internal/number/decimal.go b/vendor/golang.org/x/text/internal/number/decimal.go
deleted file mode 100644
index e128cf3..0000000
--- a/vendor/golang.org/x/text/internal/number/decimal.go
+++ /dev/null
@@ -1,500 +0,0 @@
-// Copyright 2017 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 stringer -type RoundingMode
-
-package number
-
-import (
- "math"
- "strconv"
-)
-
-// RoundingMode determines how a number is rounded to the desired precision.
-type RoundingMode byte
-
-const (
- ToNearestEven RoundingMode = iota // towards the nearest integer, or towards an even number if equidistant.
- ToNearestZero // towards the nearest integer, or towards zero if equidistant.
- ToNearestAway // towards the nearest integer, or away from zero if equidistant.
- ToPositiveInf // towards infinity
- ToNegativeInf // towards negative infinity
- ToZero // towards zero
- AwayFromZero // away from zero
- numModes
-)
-
-const maxIntDigits = 20
-
-// A Decimal represents a floating point number in decimal format.
-// Digits represents a number [0, 1.0), and the absolute value represented by
-// Decimal is Digits * 10^Exp. Leading and trailing zeros may be omitted and Exp
-// may point outside a valid position in Digits.
-//
-// Examples:
-//
-// Number Decimal
-// 12345 Digits: [1, 2, 3, 4, 5], Exp: 5
-// 12.345 Digits: [1, 2, 3, 4, 5], Exp: 2
-// 12000 Digits: [1, 2], Exp: 5
-// 12000.00 Digits: [1, 2], Exp: 5
-// 0.00123 Digits: [1, 2, 3], Exp: -2
-// 0 Digits: [], Exp: 0
-type Decimal struct {
- digits
-
- buf [maxIntDigits]byte
-}
-
-type digits struct {
- Digits []byte // mantissa digits, big-endian
- Exp int32 // exponent
- Neg bool
- Inf bool // Takes precedence over Digits and Exp.
- NaN bool // Takes precedence over Inf.
-}
-
-// Digits represents a floating point number represented in digits of the
-// base in which a number is to be displayed. It is similar to Decimal, but
-// keeps track of trailing fraction zeros and the comma placement for
-// engineering notation. Digits must have at least one digit.
-//
-// Examples:
-//
-// Number Decimal
-// decimal
-// 12345 Digits: [1, 2, 3, 4, 5], Exp: 5 End: 5
-// 12.345 Digits: [1, 2, 3, 4, 5], Exp: 2 End: 5
-// 12000 Digits: [1, 2], Exp: 5 End: 5
-// 12000.00 Digits: [1, 2], Exp: 5 End: 7
-// 0.00123 Digits: [1, 2, 3], Exp: -2 End: 3
-// 0 Digits: [], Exp: 0 End: 1
-// scientific (actual exp is Exp - Comma)
-// 0e0 Digits: [0], Exp: 1, End: 1, Comma: 1
-// .0e0 Digits: [0], Exp: 0, End: 1, Comma: 0
-// 0.0e0 Digits: [0], Exp: 1, End: 2, Comma: 1
-// 1.23e4 Digits: [1, 2, 3], Exp: 5, End: 3, Comma: 1
-// .123e5 Digits: [1, 2, 3], Exp: 5, End: 3, Comma: 0
-// engineering
-// 12.3e3 Digits: [1, 2, 3], Exp: 5, End: 3, Comma: 2
-type Digits struct {
- digits
- // End indicates the end position of the number.
- End int32 // For decimals Exp <= End. For scientific len(Digits) <= End.
- // Comma is used for the comma position for scientific (always 0 or 1) and
- // engineering notation (always 0, 1, 2, or 3).
- Comma uint8
- // IsScientific indicates whether this number is to be rendered as a
- // scientific number.
- IsScientific bool
-}
-
-func (d *Digits) NumFracDigits() int {
- if d.Exp >= d.End {
- return 0
- }
- return int(d.End - d.Exp)
-}
-
-// normalize returns a new Decimal with leading and trailing zeros removed.
-func (d *Decimal) normalize() (n Decimal) {
- n = *d
- b := n.Digits
- // Strip leading zeros. Resulting number of digits is significant digits.
- for len(b) > 0 && b[0] == 0 {
- b = b[1:]
- n.Exp--
- }
- // Strip trailing zeros
- for len(b) > 0 && b[len(b)-1] == 0 {
- b = b[:len(b)-1]
- }
- if len(b) == 0 {
- n.Exp = 0
- }
- n.Digits = b
- return n
-}
-
-func (d *Decimal) clear() {
- b := d.Digits
- if b == nil {
- b = d.buf[:0]
- }
- *d = Decimal{}
- d.Digits = b[:0]
-}
-
-func (x *Decimal) String() string {
- if x.NaN {
- return "NaN"
- }
- var buf []byte
- if x.Neg {
- buf = append(buf, '-')
- }
- if x.Inf {
- buf = append(buf, "Inf"...)
- return string(buf)
- }
- switch {
- case len(x.Digits) == 0:
- buf = append(buf, '0')
- case x.Exp <= 0:
- // 0.00ddd
- buf = append(buf, "0."...)
- buf = appendZeros(buf, -int(x.Exp))
- buf = appendDigits(buf, x.Digits)
-
- case /* 0 < */ int(x.Exp) < len(x.Digits):
- // dd.ddd
- buf = appendDigits(buf, x.Digits[:x.Exp])
- buf = append(buf, '.')
- buf = appendDigits(buf, x.Digits[x.Exp:])
-
- default: // len(x.Digits) <= x.Exp
- // ddd00
- buf = appendDigits(buf, x.Digits)
- buf = appendZeros(buf, int(x.Exp)-len(x.Digits))
- }
- return string(buf)
-}
-
-func appendDigits(buf []byte, digits []byte) []byte {
- for _, c := range digits {
- buf = append(buf, c+'0')
- }
- return buf
-}
-
-// appendZeros appends n 0 digits to buf and returns buf.
-func appendZeros(buf []byte, n int) []byte {
- for ; n > 0; n-- {
- buf = append(buf, '0')
- }
- return buf
-}
-
-func (d *digits) round(mode RoundingMode, n int) {
- if n >= len(d.Digits) {
- return
- }
- // Make rounding decision: The result mantissa is truncated ("rounded down")
- // by default. Decide if we need to increment, or "round up", the (unsigned)
- // mantissa.
- inc := false
- switch mode {
- case ToNegativeInf:
- inc = d.Neg
- case ToPositiveInf:
- inc = !d.Neg
- case ToZero:
- // nothing to do
- case AwayFromZero:
- inc = true
- case ToNearestEven:
- inc = d.Digits[n] > 5 || d.Digits[n] == 5 &&
- (len(d.Digits) > n+1 || n == 0 || d.Digits[n-1]&1 != 0)
- case ToNearestAway:
- inc = d.Digits[n] >= 5
- case ToNearestZero:
- inc = d.Digits[n] > 5 || d.Digits[n] == 5 && len(d.Digits) > n+1
- default:
- panic("unreachable")
- }
- if inc {
- d.roundUp(n)
- } else {
- d.roundDown(n)
- }
-}
-
-// roundFloat rounds a floating point number.
-func (r RoundingMode) roundFloat(x float64) float64 {
- // Make rounding decision: The result mantissa is truncated ("rounded down")
- // by default. Decide if we need to increment, or "round up", the (unsigned)
- // mantissa.
- abs := x
- if x < 0 {
- abs = -x
- }
- i, f := math.Modf(abs)
- if f == 0.0 {
- return x
- }
- inc := false
- switch r {
- case ToNegativeInf:
- inc = x < 0
- case ToPositiveInf:
- inc = x >= 0
- case ToZero:
- // nothing to do
- case AwayFromZero:
- inc = true
- case ToNearestEven:
- // TODO: check overflow
- inc = f > 0.5 || f == 0.5 && int64(i)&1 != 0
- case ToNearestAway:
- inc = f >= 0.5
- case ToNearestZero:
- inc = f > 0.5
- default:
- panic("unreachable")
- }
- if inc {
- i += 1
- }
- if abs != x {
- i = -i
- }
- return i
-}
-
-func (x *digits) roundUp(n int) {
- if n < 0 || n >= len(x.Digits) {
- return // nothing to do
- }
- // find first digit < 9
- for n > 0 && x.Digits[n-1] >= 9 {
- n--
- }
-
- if n == 0 {
- // all digits are 9s => round up to 1 and update exponent
- x.Digits[0] = 1 // ok since len(x.Digits) > n
- x.Digits = x.Digits[:1]
- x.Exp++
- return
- }
- x.Digits[n-1]++
- x.Digits = x.Digits[:n]
- // x already trimmed
-}
-
-func (x *digits) roundDown(n int) {
- if n < 0 || n >= len(x.Digits) {
- return // nothing to do
- }
- x.Digits = x.Digits[:n]
- trim(x)
-}
-
-// trim cuts off any trailing zeros from x's mantissa;
-// they are meaningless for the value of x.
-func trim(x *digits) {
- i := len(x.Digits)
- for i > 0 && x.Digits[i-1] == 0 {
- i--
- }
- x.Digits = x.Digits[:i]
- if i == 0 {
- x.Exp = 0
- }
-}
-
-// A Converter converts a number into decimals according to the given rounding
-// criteria.
-type Converter interface {
- Convert(d *Decimal, r RoundingContext)
-}
-
-const (
- signed = true
- unsigned = false
-)
-
-// Convert converts the given number to the decimal representation using the
-// supplied RoundingContext.
-func (d *Decimal) Convert(r RoundingContext, number interface{}) {
- switch f := number.(type) {
- case Converter:
- d.clear()
- f.Convert(d, r)
- case float32:
- d.ConvertFloat(r, float64(f), 32)
- case float64:
- d.ConvertFloat(r, f, 64)
- case int:
- d.ConvertInt(r, signed, uint64(f))
- case int8:
- d.ConvertInt(r, signed, uint64(f))
- case int16:
- d.ConvertInt(r, signed, uint64(f))
- case int32:
- d.ConvertInt(r, signed, uint64(f))
- case int64:
- d.ConvertInt(r, signed, uint64(f))
- case uint:
- d.ConvertInt(r, unsigned, uint64(f))
- case uint8:
- d.ConvertInt(r, unsigned, uint64(f))
- case uint16:
- d.ConvertInt(r, unsigned, uint64(f))
- case uint32:
- d.ConvertInt(r, unsigned, uint64(f))
- case uint64:
- d.ConvertInt(r, unsigned, f)
-
- default:
- d.NaN = true
- // TODO:
- // case string: if produced by strconv, allows for easy arbitrary pos.
- // case reflect.Value:
- // case big.Float
- // case big.Int
- // case big.Rat?
- // catch underlyings using reflect or will this already be done by the
- // message package?
- }
-}
-
-// ConvertInt converts an integer to decimals.
-func (d *Decimal) ConvertInt(r RoundingContext, signed bool, x uint64) {
- if r.Increment > 0 {
- // TODO: if uint64 is too large, fall back to float64
- if signed {
- d.ConvertFloat(r, float64(int64(x)), 64)
- } else {
- d.ConvertFloat(r, float64(x), 64)
- }
- return
- }
- d.clear()
- if signed && int64(x) < 0 {
- x = uint64(-int64(x))
- d.Neg = true
- }
- d.fillIntDigits(x)
- d.Exp = int32(len(d.Digits))
-}
-
-// ConvertFloat converts a floating point number to decimals.
-func (d *Decimal) ConvertFloat(r RoundingContext, x float64, size int) {
- d.clear()
- if math.IsNaN(x) {
- d.NaN = true
- return
- }
- // Simple case: decimal notation
- if r.Increment > 0 {
- scale := int(r.IncrementScale)
- mult := 1.0
- if scale >= len(scales) {
- mult = math.Pow(10, float64(scale))
- } else {
- mult = scales[scale]
- }
- // We multiply x instead of dividing inc as it gives less rounding
- // issues.
- x *= mult
- x /= float64(r.Increment)
- x = r.Mode.roundFloat(x)
- x *= float64(r.Increment)
- x /= mult
- }
-
- abs := x
- if x < 0 {
- d.Neg = true
- abs = -x
- }
- if math.IsInf(abs, 1) {
- d.Inf = true
- return
- }
-
- // By default we get the exact decimal representation.
- verb := byte('g')
- prec := -1
- // As the strconv API does not return the rounding accuracy, we can only
- // round using ToNearestEven.
- if r.Mode == ToNearestEven {
- if n := r.RoundSignificantDigits(); n >= 0 {
- prec = n
- } else if n = r.RoundFractionDigits(); n >= 0 {
- prec = n
- verb = 'f'
- }
- } else {
- // TODO: At this point strconv's rounding is imprecise to the point that
- // it is not usable for this purpose.
- // See https://github.com/golang/go/issues/21714
- // If rounding is requested, we ask for a large number of digits and
- // round from there to simulate rounding only once.
- // Ideally we would have strconv export an AppendDigits that would take
- // a rounding mode and/or return an accuracy. Something like this would
- // work:
- // AppendDigits(dst []byte, x float64, base, size, prec int) (digits []byte, exp, accuracy int)
- hasPrec := r.RoundSignificantDigits() >= 0
- hasScale := r.RoundFractionDigits() >= 0
- if hasPrec || hasScale {
- // prec is the number of mantissa bits plus some extra for safety.
- // We need at least the number of mantissa bits as decimals to
- // accurately represent the floating point without rounding, as each
- // bit requires one more decimal to represent: 0.5, 0.25, 0.125, ...
- prec = 60
- }
- }
-
- b := strconv.AppendFloat(d.Digits[:0], abs, verb, prec, size)
- i := 0
- k := 0
- beforeDot := 1
- for i < len(b) {
- if c := b[i]; '0' <= c && c <= '9' {
- b[k] = c - '0'
- k++
- d.Exp += int32(beforeDot)
- } else if c == '.' {
- beforeDot = 0
- d.Exp = int32(k)
- } else {
- break
- }
- i++
- }
- d.Digits = b[:k]
- if i != len(b) {
- i += len("e")
- pSign := i
- exp := 0
- for i++; i < len(b); i++ {
- exp *= 10
- exp += int(b[i] - '0')
- }
- if b[pSign] == '-' {
- exp = -exp
- }
- d.Exp = int32(exp) + 1
- }
-}
-
-func (d *Decimal) fillIntDigits(x uint64) {
- if cap(d.Digits) < maxIntDigits {
- d.Digits = d.buf[:]
- } else {
- d.Digits = d.buf[:maxIntDigits]
- }
- i := 0
- for ; x > 0; x /= 10 {
- d.Digits[i] = byte(x % 10)
- i++
- }
- d.Digits = d.Digits[:i]
- for p := 0; p < i; p++ {
- i--
- d.Digits[p], d.Digits[i] = d.Digits[i], d.Digits[p]
- }
-}
-
-var scales [70]float64
-
-func init() {
- x := 1.0
- for i := range scales {
- scales[i] = x
- x *= 10
- }
-}
diff --git a/vendor/golang.org/x/text/internal/number/format.go b/vendor/golang.org/x/text/internal/number/format.go
deleted file mode 100644
index cd94c5d..0000000
--- a/vendor/golang.org/x/text/internal/number/format.go
+++ /dev/null
@@ -1,535 +0,0 @@
-// Copyright 2017 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 number
-
-import (
- "strconv"
- "unicode/utf8"
-
- "golang.org/x/text/language"
-)
-
-// TODO:
-// - grouping of fractions
-// - allow user-defined superscript notation (such as <sup>4</sup>)
-// - same for non-breaking spaces, like &nbsp;
-
-// A VisibleDigits computes digits, comma placement and trailing zeros as they
-// will be shown to the user.
-type VisibleDigits interface {
- Digits(buf []byte, t language.Tag, scale int) Digits
- // TODO: Do we also need to add the verb or pass a format.State?
-}
-
-// Formatting proceeds along the following lines:
-// 0) Compose rounding information from format and context.
-// 1) Convert a number into a Decimal.
-// 2) Sanitize Decimal by adding trailing zeros, removing leading digits, and
-// (non-increment) rounding. The Decimal that results from this is suitable
-// for determining the plural form.
-// 3) Render the Decimal in the localized form.
-
-// Formatter contains all the information needed to render a number.
-type Formatter struct {
- Pattern
- Info
-}
-
-func (f *Formatter) init(t language.Tag, index []uint8) {
- f.Info = InfoFromTag(t)
- f.Pattern = formats[index[tagToID(t)]]
-}
-
-// InitPattern initializes a Formatter for the given Pattern.
-func (f *Formatter) InitPattern(t language.Tag, pat *Pattern) {
- f.Info = InfoFromTag(t)
- f.Pattern = *pat
-}
-
-// InitDecimal initializes a Formatter using the default Pattern for the given
-// language.
-func (f *Formatter) InitDecimal(t language.Tag) {
- f.init(t, tagToDecimal)
-}
-
-// InitScientific initializes a Formatter using the default Pattern for the
-// given language.
-func (f *Formatter) InitScientific(t language.Tag) {
- f.init(t, tagToScientific)
- f.Pattern.MinFractionDigits = 0
- f.Pattern.MaxFractionDigits = -1
-}
-
-// InitEngineering initializes a Formatter using the default Pattern for the
-// given language.
-func (f *Formatter) InitEngineering(t language.Tag) {
- f.init(t, tagToScientific)
- f.Pattern.MinFractionDigits = 0
- f.Pattern.MaxFractionDigits = -1
- f.Pattern.MaxIntegerDigits = 3
- f.Pattern.MinIntegerDigits = 1
-}
-
-// InitPercent initializes a Formatter using the default Pattern for the given
-// language.
-func (f *Formatter) InitPercent(t language.Tag) {
- f.init(t, tagToPercent)
-}
-
-// InitPerMille initializes a Formatter using the default Pattern for the given
-// language.
-func (f *Formatter) InitPerMille(t language.Tag) {
- f.init(t, tagToPercent)
- f.Pattern.DigitShift = 3
-}
-
-func (f *Formatter) Append(dst []byte, x interface{}) []byte {
- var d Decimal
- r := f.RoundingContext
- d.Convert(r, x)
- return f.Render(dst, FormatDigits(&d, r))
-}
-
-func FormatDigits(d *Decimal, r RoundingContext) Digits {
- if r.isScientific() {
- return scientificVisibleDigits(r, d)
- }
- return decimalVisibleDigits(r, d)
-}
-
-func (f *Formatter) Format(dst []byte, d *Decimal) []byte {
- return f.Render(dst, FormatDigits(d, f.RoundingContext))
-}
-
-func (f *Formatter) Render(dst []byte, d Digits) []byte {
- var result []byte
- var postPrefix, preSuffix int
- if d.IsScientific {
- result, postPrefix, preSuffix = appendScientific(dst, f, &d)
- } else {
- result, postPrefix, preSuffix = appendDecimal(dst, f, &d)
- }
- if f.PadRune == 0 {
- return result
- }
- width := int(f.FormatWidth)
- if count := utf8.RuneCount(result); count < width {
- insertPos := 0
- switch f.Flags & PadMask {
- case PadAfterPrefix:
- insertPos = postPrefix
- case PadBeforeSuffix:
- insertPos = preSuffix
- case PadAfterSuffix:
- insertPos = len(result)
- }
- num := width - count
- pad := [utf8.UTFMax]byte{' '}
- sz := 1
- if r := f.PadRune; r != 0 {
- sz = utf8.EncodeRune(pad[:], r)
- }
- extra := sz * num
- if n := len(result) + extra; n < cap(result) {
- result = result[:n]
- copy(result[insertPos+extra:], result[insertPos:])
- } else {
- buf := make([]byte, n)
- copy(buf, result[:insertPos])
- copy(buf[insertPos+extra:], result[insertPos:])
- result = buf
- }
- for ; num > 0; num-- {
- insertPos += copy(result[insertPos:], pad[:sz])
- }
- }
- return result
-}
-
-// decimalVisibleDigits converts d according to the RoundingContext. Note that
-// the exponent may change as a result of this operation.
-func decimalVisibleDigits(r RoundingContext, d *Decimal) Digits {
- if d.NaN || d.Inf {
- return Digits{digits: digits{Neg: d.Neg, NaN: d.NaN, Inf: d.Inf}}
- }
- n := Digits{digits: d.normalize().digits}
-
- exp := n.Exp
- exp += int32(r.DigitShift)
-
- // Cap integer digits. Remove *most-significant* digits.
- if r.MaxIntegerDigits > 0 {
- if p := int(exp) - int(r.MaxIntegerDigits); p > 0 {
- if p > len(n.Digits) {
- p = len(n.Digits)
- }
- if n.Digits = n.Digits[p:]; len(n.Digits) == 0 {
- exp = 0
- } else {
- exp -= int32(p)
- }
- // Strip leading zeros.
- for len(n.Digits) > 0 && n.Digits[0] == 0 {
- n.Digits = n.Digits[1:]
- exp--
- }
- }
- }
-
- // Rounding if not already done by Convert.
- p := len(n.Digits)
- if maxSig := int(r.MaxSignificantDigits); maxSig > 0 {
- p = maxSig
- }
- if maxFrac := int(r.MaxFractionDigits); maxFrac >= 0 {
- if cap := int(exp) + maxFrac; cap < p {
- p = int(exp) + maxFrac
- }
- if p < 0 {
- p = 0
- }
- }
- n.round(r.Mode, p)
-
- // set End (trailing zeros)
- n.End = int32(len(n.Digits))
- if n.End == 0 {
- exp = 0
- if r.MinFractionDigits > 0 {
- n.End = int32(r.MinFractionDigits)
- }
- if p := int32(r.MinSignificantDigits) - 1; p > n.End {
- n.End = p
- }
- } else {
- if end := exp + int32(r.MinFractionDigits); end > n.End {
- n.End = end
- }
- if n.End < int32(r.MinSignificantDigits) {
- n.End = int32(r.MinSignificantDigits)
- }
- }
- n.Exp = exp
- return n
-}
-
-// appendDecimal appends a formatted number to dst. It returns two possible
-// insertion points for padding.
-func appendDecimal(dst []byte, f *Formatter, n *Digits) (b []byte, postPre, preSuf int) {
- if dst, ok := f.renderSpecial(dst, n); ok {
- return dst, 0, len(dst)
- }
- digits := n.Digits
- exp := n.Exp
-
- // Split in integer and fraction part.
- var intDigits, fracDigits []byte
- numInt := 0
- numFrac := int(n.End - n.Exp)
- if exp > 0 {
- numInt = int(exp)
- if int(exp) >= len(digits) { // ddddd | ddddd00
- intDigits = digits
- } else { // ddd.dd
- intDigits = digits[:exp]
- fracDigits = digits[exp:]
- }
- } else {
- fracDigits = digits
- }
-
- neg := n.Neg
- affix, suffix := f.getAffixes(neg)
- dst = appendAffix(dst, f, affix, neg)
- savedLen := len(dst)
-
- minInt := int(f.MinIntegerDigits)
- if minInt == 0 && f.MinSignificantDigits > 0 {
- minInt = 1
- }
- // add leading zeros
- for i := minInt; i > numInt; i-- {
- dst = f.AppendDigit(dst, 0)
- if f.needsSep(i) {
- dst = append(dst, f.Symbol(SymGroup)...)
- }
- }
- i := 0
- for ; i < len(intDigits); i++ {
- dst = f.AppendDigit(dst, intDigits[i])
- if f.needsSep(numInt - i) {
- dst = append(dst, f.Symbol(SymGroup)...)
- }
- }
- for ; i < numInt; i++ {
- dst = f.AppendDigit(dst, 0)
- if f.needsSep(numInt - i) {
- dst = append(dst, f.Symbol(SymGroup)...)
- }
- }
-
- if numFrac > 0 || f.Flags&AlwaysDecimalSeparator != 0 {
- dst = append(dst, f.Symbol(SymDecimal)...)
- }
- // Add trailing zeros
- i = 0
- for n := -int(n.Exp); i < n; i++ {
- dst = f.AppendDigit(dst, 0)
- }
- for _, d := range fracDigits {
- i++
- dst = f.AppendDigit(dst, d)
- }
- for ; i < numFrac; i++ {
- dst = f.AppendDigit(dst, 0)
- }
- return appendAffix(dst, f, suffix, neg), savedLen, len(dst)
-}
-
-func scientificVisibleDigits(r RoundingContext, d *Decimal) Digits {
- if d.NaN || d.Inf {
- return Digits{digits: digits{Neg: d.Neg, NaN: d.NaN, Inf: d.Inf}}
- }
- n := Digits{digits: d.normalize().digits, IsScientific: true}
-
- // Normalize to have at least one digit. This simplifies engineering
- // notation.
- if len(n.Digits) == 0 {
- n.Digits = append(n.Digits, 0)
- n.Exp = 1
- }
-
- // Significant digits are transformed by the parser for scientific notation
- // and do not need to be handled here.
- maxInt, numInt := int(r.MaxIntegerDigits), int(r.MinIntegerDigits)
- if numInt == 0 {
- numInt = 1
- }
-
- // If a maximum number of integers is specified, the minimum must be 1
- // and the exponent is grouped by this number (e.g. for engineering)
- if maxInt > numInt {
- // Correct the exponent to reflect a single integer digit.
- numInt = 1
- // engineering
- // 0.01234 ([12345]e-1) -> 1.2345e-2 12.345e-3
- // 12345 ([12345]e+5) -> 1.2345e4 12.345e3
- d := int(n.Exp-1) % maxInt
- if d < 0 {
- d += maxInt
- }
- numInt += d
- }
-
- p := len(n.Digits)
- if maxSig := int(r.MaxSignificantDigits); maxSig > 0 {
- p = maxSig
- }
- if maxFrac := int(r.MaxFractionDigits); maxFrac >= 0 && numInt+maxFrac < p {
- p = numInt + maxFrac
- }
- n.round(r.Mode, p)
-
- n.Comma = uint8(numInt)
- n.End = int32(len(n.Digits))
- if minSig := int32(r.MinFractionDigits) + int32(numInt); n.End < minSig {
- n.End = minSig
- }
- return n
-}
-
-// appendScientific appends a formatted number to dst. It returns two possible
-// insertion points for padding.
-func appendScientific(dst []byte, f *Formatter, n *Digits) (b []byte, postPre, preSuf int) {
- if dst, ok := f.renderSpecial(dst, n); ok {
- return dst, 0, 0
- }
- digits := n.Digits
- numInt := int(n.Comma)
- numFrac := int(n.End) - int(n.Comma)
-
- var intDigits, fracDigits []byte
- if numInt <= len(digits) {
- intDigits = digits[:numInt]
- fracDigits = digits[numInt:]
- } else {
- intDigits = digits
- }
- neg := n.Neg
- affix, suffix := f.getAffixes(neg)
- dst = appendAffix(dst, f, affix, neg)
- savedLen := len(dst)
-
- i := 0
- for ; i < len(intDigits); i++ {
- dst = f.AppendDigit(dst, intDigits[i])
- if f.needsSep(numInt - i) {
- dst = append(dst, f.Symbol(SymGroup)...)
- }
- }
- for ; i < numInt; i++ {
- dst = f.AppendDigit(dst, 0)
- if f.needsSep(numInt - i) {
- dst = append(dst, f.Symbol(SymGroup)...)
- }
- }
-
- if numFrac > 0 || f.Flags&AlwaysDecimalSeparator != 0 {
- dst = append(dst, f.Symbol(SymDecimal)...)
- }
- i = 0
- for ; i < len(fracDigits); i++ {
- dst = f.AppendDigit(dst, fracDigits[i])
- }
- for ; i < numFrac; i++ {
- dst = f.AppendDigit(dst, 0)
- }
-
- // exp
- buf := [12]byte{}
- // TODO: use exponential if superscripting is not available (no Latin
- // numbers or no tags) and use exponential in all other cases.
- exp := n.Exp - int32(n.Comma)
- exponential := f.Symbol(SymExponential)
- if exponential == "E" {
- dst = append(dst, "\u202f"...) // NARROW NO-BREAK SPACE
- dst = append(dst, f.Symbol(SymSuperscriptingExponent)...)
- dst = append(dst, "\u202f"...) // NARROW NO-BREAK SPACE
- dst = f.AppendDigit(dst, 1)
- dst = f.AppendDigit(dst, 0)
- switch {
- case exp < 0:
- dst = append(dst, superMinus...)
- exp = -exp
- case f.Flags&AlwaysExpSign != 0:
- dst = append(dst, superPlus...)
- }
- b = strconv.AppendUint(buf[:0], uint64(exp), 10)
- for i := len(b); i < int(f.MinExponentDigits); i++ {
- dst = append(dst, superDigits[0]...)
- }
- for _, c := range b {
- dst = append(dst, superDigits[c-'0']...)
- }
- } else {
- dst = append(dst, exponential...)
- switch {
- case exp < 0:
- dst = append(dst, f.Symbol(SymMinusSign)...)
- exp = -exp
- case f.Flags&AlwaysExpSign != 0:
- dst = append(dst, f.Symbol(SymPlusSign)...)
- }
- b = strconv.AppendUint(buf[:0], uint64(exp), 10)
- for i := len(b); i < int(f.MinExponentDigits); i++ {
- dst = f.AppendDigit(dst, 0)
- }
- for _, c := range b {
- dst = f.AppendDigit(dst, c-'0')
- }
- }
- return appendAffix(dst, f, suffix, neg), savedLen, len(dst)
-}
-
-const (
- superMinus = "\u207B" // SUPERSCRIPT HYPHEN-MINUS
- superPlus = "\u207A" // SUPERSCRIPT PLUS SIGN
-)
-
-var (
- // Note: the digits are not sequential!!!
- superDigits = []string{
- "\u2070", // SUPERSCRIPT DIGIT ZERO
- "\u00B9", // SUPERSCRIPT DIGIT ONE
- "\u00B2", // SUPERSCRIPT DIGIT TWO
- "\u00B3", // SUPERSCRIPT DIGIT THREE
- "\u2074", // SUPERSCRIPT DIGIT FOUR
- "\u2075", // SUPERSCRIPT DIGIT FIVE
- "\u2076", // SUPERSCRIPT DIGIT SIX
- "\u2077", // SUPERSCRIPT DIGIT SEVEN
- "\u2078", // SUPERSCRIPT DIGIT EIGHT
- "\u2079", // SUPERSCRIPT DIGIT NINE
- }
-)
-
-func (f *Formatter) getAffixes(neg bool) (affix, suffix string) {
- str := f.Affix
- if str != "" {
- if f.NegOffset > 0 {
- if neg {
- str = str[f.NegOffset:]
- } else {
- str = str[:f.NegOffset]
- }
- }
- sufStart := 1 + str[0]
- affix = str[1:sufStart]
- suffix = str[sufStart+1:]
- }
- // TODO: introduce a NeedNeg sign to indicate if the left pattern already
- // has a sign marked?
- if f.NegOffset == 0 && (neg || f.Flags&AlwaysSign != 0) {
- affix = "-" + affix
- }
- return affix, suffix
-}
-
-func (f *Formatter) renderSpecial(dst []byte, d *Digits) (b []byte, ok bool) {
- if d.NaN {
- return fmtNaN(dst, f), true
- }
- if d.Inf {
- return fmtInfinite(dst, f, d), true
- }
- return dst, false
-}
-
-func fmtNaN(dst []byte, f *Formatter) []byte {
- return append(dst, f.Symbol(SymNan)...)
-}
-
-func fmtInfinite(dst []byte, f *Formatter, d *Digits) []byte {
- affix, suffix := f.getAffixes(d.Neg)
- dst = appendAffix(dst, f, affix, d.Neg)
- dst = append(dst, f.Symbol(SymInfinity)...)
- dst = appendAffix(dst, f, suffix, d.Neg)
- return dst
-}
-
-func appendAffix(dst []byte, f *Formatter, affix string, neg bool) []byte {
- quoting := false
- escaping := false
- for _, r := range affix {
- switch {
- case escaping:
- // escaping occurs both inside and outside of quotes
- dst = append(dst, string(r)...)
- escaping = false
- case r == '\\':
- escaping = true
- case r == '\'':
- quoting = !quoting
- case quoting:
- dst = append(dst, string(r)...)
- case r == '%':
- if f.DigitShift == 3 {
- dst = append(dst, f.Symbol(SymPerMille)...)
- } else {
- dst = append(dst, f.Symbol(SymPercentSign)...)
- }
- case r == '-' || r == '+':
- if neg {
- dst = append(dst, f.Symbol(SymMinusSign)...)
- } else if f.Flags&ElideSign == 0 {
- dst = append(dst, f.Symbol(SymPlusSign)...)
- } else {
- dst = append(dst, ' ')
- }
- default:
- dst = append(dst, string(r)...)
- }
- }
- return dst
-}
diff --git a/vendor/golang.org/x/text/internal/number/number.go b/vendor/golang.org/x/text/internal/number/number.go
deleted file mode 100644
index e1d933c..0000000
--- a/vendor/golang.org/x/text/internal/number/number.go
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2016 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 gen.go gen_common.go
-
-// Package number contains tools and data for formatting numbers.
-package number
-
-import (
- "unicode/utf8"
-
- "golang.org/x/text/internal/language/compact"
- "golang.org/x/text/language"
-)
-
-// Info holds number formatting configuration data.
-type Info struct {
- system systemData // numbering system information
- symIndex symOffset // index to symbols
-}
-
-// InfoFromLangID returns a Info for the given compact language identifier and
-// numbering system identifier. If system is the empty string, the default
-// numbering system will be taken for that language.
-func InfoFromLangID(compactIndex compact.ID, numberSystem string) Info {
- p := langToDefaults[compactIndex]
- // Lookup the entry for the language.
- pSymIndex := symOffset(0) // Default: Latin, default symbols
- system, ok := systemMap[numberSystem]
- if !ok {
- // Take the value for the default numbering system. This is by far the
- // most common case as an alternative numbering system is hardly used.
- if p&hasNonLatnMask == 0 { // Latn digits.
- pSymIndex = p
- } else { // Non-Latn or multiple numbering systems.
- // Take the first entry from the alternatives list.
- data := langToAlt[p&^hasNonLatnMask]
- pSymIndex = data.symIndex
- system = data.system
- }
- } else {
- langIndex := compactIndex
- ns := system
- outerLoop:
- for ; ; p = langToDefaults[langIndex] {
- if p&hasNonLatnMask == 0 {
- if ns == 0 {
- // The index directly points to the symbol data.
- pSymIndex = p
- break
- }
- // Move to the parent and retry.
- langIndex = langIndex.Parent()
- } else {
- // The index points to a list of symbol data indexes.
- for _, e := range langToAlt[p&^hasNonLatnMask:] {
- if e.compactTag != langIndex {
- if langIndex == 0 {
- // The CLDR root defines full symbol information for
- // all numbering systems (even though mostly by
- // means of aliases). Fall back to the default entry
- // for Latn if there is no data for the numbering
- // system of this language.
- if ns == 0 {
- break
- }
- // Fall back to Latin and start from the original
- // language. See
- // https://unicode.org/reports/tr35/#Locale_Inheritance.
- ns = numLatn
- langIndex = compactIndex
- continue outerLoop
- }
- // Fall back to parent.
- langIndex = langIndex.Parent()
- } else if e.system == ns {
- pSymIndex = e.symIndex
- break outerLoop
- }
- }
- }
- }
- }
- if int(system) >= len(numSysData) { // algorithmic
- // Will generate ASCII digits in case the user inadvertently calls
- // WriteDigit or Digit on it.
- d := numSysData[0]
- d.id = system
- return Info{
- system: d,
- symIndex: pSymIndex,
- }
- }
- return Info{
- system: numSysData[system],
- symIndex: pSymIndex,
- }
-}
-
-// InfoFromTag returns a Info for the given language tag.
-func InfoFromTag(t language.Tag) Info {
- return InfoFromLangID(tagToID(t), t.TypeForKey("nu"))
-}
-
-// IsDecimal reports if the numbering system can convert decimal to native
-// symbols one-to-one.
-func (n Info) IsDecimal() bool {
- return int(n.system.id) < len(numSysData)
-}
-
-// WriteDigit writes the UTF-8 sequence for n corresponding to the given ASCII
-// digit to dst and reports the number of bytes written. dst must be large
-// enough to hold the rune (can be up to utf8.UTFMax bytes).
-func (n Info) WriteDigit(dst []byte, asciiDigit rune) int {
- copy(dst, n.system.zero[:n.system.digitSize])
- dst[n.system.digitSize-1] += byte(asciiDigit - '0')
- return int(n.system.digitSize)
-}
-
-// AppendDigit appends the UTF-8 sequence for n corresponding to the given digit
-// to dst and reports the number of bytes written. dst must be large enough to
-// hold the rune (can be up to utf8.UTFMax bytes).
-func (n Info) AppendDigit(dst []byte, digit byte) []byte {
- dst = append(dst, n.system.zero[:n.system.digitSize]...)
- dst[len(dst)-1] += digit
- return dst
-}
-
-// Digit returns the digit for the numbering system for the corresponding ASCII
-// value. For example, ni.Digit('3') could return '三'. Note that the argument
-// is the rune constant '3', which equals 51, not the integer constant 3.
-func (n Info) Digit(asciiDigit rune) rune {
- var x [utf8.UTFMax]byte
- n.WriteDigit(x[:], asciiDigit)
- r, _ := utf8.DecodeRune(x[:])
- return r
-}
-
-// Symbol returns the string for the given symbol type.
-func (n Info) Symbol(t SymbolType) string {
- return symData.Elem(int(symIndex[n.symIndex][t]))
-}
-
-func formatForLang(t language.Tag, index []byte) *Pattern {
- return &formats[index[tagToID(t)]]
-}
-
-func tagToID(t language.Tag) compact.ID {
- id, _ := compact.RegionalID(compact.Tag(t))
- return id
-}
diff --git a/vendor/golang.org/x/text/internal/number/pattern.go b/vendor/golang.org/x/text/internal/number/pattern.go
deleted file mode 100644
index 06e5955..0000000
--- a/vendor/golang.org/x/text/internal/number/pattern.go
+++ /dev/null
@@ -1,485 +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 number
-
-import (
- "errors"
- "unicode/utf8"
-)
-
-// This file contains a parser for the CLDR number patterns as described in
-// https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns.
-//
-// The following BNF is derived from this standard.
-//
-// pattern := subpattern (';' subpattern)?
-// subpattern := affix? number exponent? affix?
-// number := decimal | sigDigits
-// decimal := '#'* '0'* ('.' fraction)? | '#' | '0'
-// fraction := '0'* '#'*
-// sigDigits := '#'* '@' '@'* '#'*
-// exponent := 'E' '+'? '0'* '0'
-// padSpec := '*' \L
-//
-// Notes:
-// - An affix pattern may contain any runes, but runes with special meaning
-// should be escaped.
-// - Sequences of digits, '#', and '@' in decimal and sigDigits may have
-// interstitial commas.
-
-// TODO: replace special characters in affixes (-, +, ¤) with control codes.
-
-// Pattern holds information for formatting numbers. It is designed to hold
-// information from CLDR number patterns.
-//
-// This pattern is precompiled for all patterns for all languages. Even though
-// the number of patterns is not very large, we want to keep this small.
-//
-// This type is only intended for internal use.
-type Pattern struct {
- RoundingContext
-
- Affix string // includes prefix and suffix. First byte is prefix length.
- Offset uint16 // Offset into Affix for prefix and suffix
- NegOffset uint16 // Offset into Affix for negative prefix and suffix or 0.
- PadRune rune
- FormatWidth uint16
-
- GroupingSize [2]uint8
- Flags PatternFlag
-}
-
-// A RoundingContext indicates how a number should be converted to digits.
-// It contains all information needed to determine the "visible digits" as
-// required by the pluralization rules.
-type RoundingContext struct {
- // TODO: unify these two fields so that there is a more unambiguous meaning
- // of how precision is handled.
- MaxSignificantDigits int16 // -1 is unlimited
- MaxFractionDigits int16 // -1 is unlimited
-
- Increment uint32
- IncrementScale uint8 // May differ from printed scale.
-
- Mode RoundingMode
-
- DigitShift uint8 // Number of decimals to shift. Used for % and ‰.
-
- // Number of digits.
- MinIntegerDigits uint8
-
- MaxIntegerDigits uint8
- MinFractionDigits uint8
- MinSignificantDigits uint8
-
- MinExponentDigits uint8
-}
-
-// RoundSignificantDigits returns the number of significant digits an
-// implementation of Convert may round to or n < 0 if there is no maximum or
-// a maximum is not recommended.
-func (r *RoundingContext) RoundSignificantDigits() (n int) {
- if r.MaxFractionDigits == 0 && r.MaxSignificantDigits > 0 {
- return int(r.MaxSignificantDigits)
- } else if r.isScientific() && r.MaxIntegerDigits == 1 {
- if r.MaxSignificantDigits == 0 ||
- int(r.MaxFractionDigits+1) == int(r.MaxSignificantDigits) {
- // Note: don't add DigitShift: it is only used for decimals.
- return int(r.MaxFractionDigits) + 1
- }
- }
- return -1
-}
-
-// RoundFractionDigits returns the number of fraction digits an implementation
-// of Convert may round to or n < 0 if there is no maximum or a maximum is not
-// recommended.
-func (r *RoundingContext) RoundFractionDigits() (n int) {
- if r.MinExponentDigits == 0 &&
- r.MaxSignificantDigits == 0 &&
- r.MaxFractionDigits >= 0 {
- return int(r.MaxFractionDigits) + int(r.DigitShift)
- }
- return -1
-}
-
-// SetScale fixes the RoundingContext to a fixed number of fraction digits.
-func (r *RoundingContext) SetScale(scale int) {
- r.MinFractionDigits = uint8(scale)
- r.MaxFractionDigits = int16(scale)
-}
-
-func (r *RoundingContext) SetPrecision(prec int) {
- r.MaxSignificantDigits = int16(prec)
-}
-
-func (r *RoundingContext) isScientific() bool {
- return r.MinExponentDigits > 0
-}
-
-func (f *Pattern) needsSep(pos int) bool {
- p := pos - 1
- size := int(f.GroupingSize[0])
- if size == 0 || p == 0 {
- return false
- }
- if p == size {
- return true
- }
- if p -= size; p < 0 {
- return false
- }
- // TODO: make second groupingsize the same as first if 0 so that we can
- // avoid this check.
- if x := int(f.GroupingSize[1]); x != 0 {
- size = x
- }
- return p%size == 0
-}
-
-// A PatternFlag is a bit mask for the flag field of a Pattern.
-type PatternFlag uint8
-
-const (
- AlwaysSign PatternFlag = 1 << iota
- ElideSign // Use space instead of plus sign. AlwaysSign must be true.
- AlwaysExpSign
- AlwaysDecimalSeparator
- ParenthesisForNegative // Common pattern. Saves space.
-
- PadAfterNumber
- PadAfterAffix
-
- PadBeforePrefix = 0 // Default
- PadAfterPrefix = PadAfterAffix
- PadBeforeSuffix = PadAfterNumber
- PadAfterSuffix = PadAfterNumber | PadAfterAffix
- PadMask = PadAfterNumber | PadAfterAffix
-)
-
-type parser struct {
- *Pattern
-
- leadingSharps int
-
- pos int
- err error
- doNotTerminate bool
- groupingCount uint
- hasGroup bool
- buf []byte
-}
-
-func (p *parser) setError(err error) {
- if p.err == nil {
- p.err = err
- }
-}
-
-func (p *parser) updateGrouping() {
- if p.hasGroup &&
- 0 < p.groupingCount && p.groupingCount < 255 {
- p.GroupingSize[1] = p.GroupingSize[0]
- p.GroupingSize[0] = uint8(p.groupingCount)
- }
- p.groupingCount = 0
- p.hasGroup = true
-}
-
-var (
- // TODO: more sensible and localizeable error messages.
- errMultiplePadSpecifiers = errors.New("format: pattern has multiple pad specifiers")
- errInvalidPadSpecifier = errors.New("format: invalid pad specifier")
- errInvalidQuote = errors.New("format: invalid quote")
- errAffixTooLarge = errors.New("format: prefix or suffix exceeds maximum UTF-8 length of 256 bytes")
- errDuplicatePercentSign = errors.New("format: duplicate percent sign")
- errDuplicatePermilleSign = errors.New("format: duplicate permille sign")
- errUnexpectedEnd = errors.New("format: unexpected end of pattern")
-)
-
-// ParsePattern extracts formatting information from a CLDR number pattern.
-//
-// See https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns.
-func ParsePattern(s string) (f *Pattern, err error) {
- p := parser{Pattern: &Pattern{}}
-
- s = p.parseSubPattern(s)
-
- if s != "" {
- // Parse negative sub pattern.
- if s[0] != ';' {
- p.setError(errors.New("format: error parsing first sub pattern"))
- return nil, p.err
- }
- neg := parser{Pattern: &Pattern{}} // just for extracting the affixes.
- s = neg.parseSubPattern(s[len(";"):])
- p.NegOffset = uint16(len(p.buf))
- p.buf = append(p.buf, neg.buf...)
- }
- if s != "" {
- p.setError(errors.New("format: spurious characters at end of pattern"))
- }
- if p.err != nil {
- return nil, p.err
- }
- if affix := string(p.buf); affix == "\x00\x00" || affix == "\x00\x00\x00\x00" {
- // No prefix or suffixes.
- p.NegOffset = 0
- } else {
- p.Affix = affix
- }
- if p.Increment == 0 {
- p.IncrementScale = 0
- }
- return p.Pattern, nil
-}
-
-func (p *parser) parseSubPattern(s string) string {
- s = p.parsePad(s, PadBeforePrefix)
- s = p.parseAffix(s)
- s = p.parsePad(s, PadAfterPrefix)
-
- s = p.parse(p.number, s)
- p.updateGrouping()
-
- s = p.parsePad(s, PadBeforeSuffix)
- s = p.parseAffix(s)
- s = p.parsePad(s, PadAfterSuffix)
- return s
-}
-
-func (p *parser) parsePad(s string, f PatternFlag) (tail string) {
- if len(s) >= 2 && s[0] == '*' {
- r, sz := utf8.DecodeRuneInString(s[1:])
- if p.PadRune != 0 {
- p.err = errMultiplePadSpecifiers
- } else {
- p.Flags |= f
- p.PadRune = r
- }
- return s[1+sz:]
- }
- return s
-}
-
-func (p *parser) parseAffix(s string) string {
- x := len(p.buf)
- p.buf = append(p.buf, 0) // placeholder for affix length
-
- s = p.parse(p.affix, s)
-
- n := len(p.buf) - x - 1
- if n > 0xFF {
- p.setError(errAffixTooLarge)
- }
- p.buf[x] = uint8(n)
- return s
-}
-
-// state implements a state transition. It returns the new state. A state
-// function may set an error on the parser or may simply return on an incorrect
-// token and let the next phase fail.
-type state func(r rune) state
-
-// parse repeatedly applies a state function on the given string until a
-// termination condition is reached.
-func (p *parser) parse(fn state, s string) (tail string) {
- for i, r := range s {
- p.doNotTerminate = false
- if fn = fn(r); fn == nil || p.err != nil {
- return s[i:]
- }
- p.FormatWidth++
- }
- if p.doNotTerminate {
- p.setError(errUnexpectedEnd)
- }
- return ""
-}
-
-func (p *parser) affix(r rune) state {
- switch r {
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- '#', '@', '.', '*', ',', ';':
- return nil
- case '\'':
- p.FormatWidth--
- return p.escapeFirst
- case '%':
- if p.DigitShift != 0 {
- p.setError(errDuplicatePercentSign)
- }
- p.DigitShift = 2
- case '\u2030': // ‰ Per mille
- if p.DigitShift != 0 {
- p.setError(errDuplicatePermilleSign)
- }
- p.DigitShift = 3
- // TODO: handle currency somehow: ¤, ¤¤, ¤¤¤, ¤¤¤¤
- }
- p.buf = append(p.buf, string(r)...)
- return p.affix
-}
-
-func (p *parser) escapeFirst(r rune) state {
- switch r {
- case '\'':
- p.buf = append(p.buf, "\\'"...)
- return p.affix
- default:
- p.buf = append(p.buf, '\'')
- p.buf = append(p.buf, string(r)...)
- }
- return p.escape
-}
-
-func (p *parser) escape(r rune) state {
- switch r {
- case '\'':
- p.FormatWidth--
- p.buf = append(p.buf, '\'')
- return p.affix
- default:
- p.buf = append(p.buf, string(r)...)
- }
- return p.escape
-}
-
-// number parses a number. The BNF says the integer part should always have
-// a '0', but that does not appear to be the case according to the rest of the
-// documentation. We will allow having only '#' numbers.
-func (p *parser) number(r rune) state {
- switch r {
- case '#':
- p.groupingCount++
- p.leadingSharps++
- case '@':
- p.groupingCount++
- p.leadingSharps = 0
- p.MaxFractionDigits = -1
- return p.sigDigits(r)
- case ',':
- if p.leadingSharps == 0 { // no leading commas
- return nil
- }
- p.updateGrouping()
- case 'E':
- p.MaxIntegerDigits = uint8(p.leadingSharps)
- return p.exponent
- case '.': // allow ".##" etc.
- p.updateGrouping()
- return p.fraction
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
- return p.integer(r)
- default:
- return nil
- }
- return p.number
-}
-
-func (p *parser) integer(r rune) state {
- if !('0' <= r && r <= '9') {
- var next state
- switch r {
- case 'E':
- if p.leadingSharps > 0 {
- p.MaxIntegerDigits = uint8(p.leadingSharps) + p.MinIntegerDigits
- }
- next = p.exponent
- case '.':
- next = p.fraction
- case ',':
- next = p.integer
- }
- p.updateGrouping()
- return next
- }
- p.Increment = p.Increment*10 + uint32(r-'0')
- p.groupingCount++
- p.MinIntegerDigits++
- return p.integer
-}
-
-func (p *parser) sigDigits(r rune) state {
- switch r {
- case '@':
- p.groupingCount++
- p.MaxSignificantDigits++
- p.MinSignificantDigits++
- case '#':
- return p.sigDigitsFinal(r)
- case 'E':
- p.updateGrouping()
- return p.normalizeSigDigitsWithExponent()
- default:
- p.updateGrouping()
- return nil
- }
- return p.sigDigits
-}
-
-func (p *parser) sigDigitsFinal(r rune) state {
- switch r {
- case '#':
- p.groupingCount++
- p.MaxSignificantDigits++
- case 'E':
- p.updateGrouping()
- return p.normalizeSigDigitsWithExponent()
- default:
- p.updateGrouping()
- return nil
- }
- return p.sigDigitsFinal
-}
-
-func (p *parser) normalizeSigDigitsWithExponent() state {
- p.MinIntegerDigits, p.MaxIntegerDigits = 1, 1
- p.MinFractionDigits = p.MinSignificantDigits - 1
- p.MaxFractionDigits = p.MaxSignificantDigits - 1
- p.MinSignificantDigits, p.MaxSignificantDigits = 0, 0
- return p.exponent
-}
-
-func (p *parser) fraction(r rune) state {
- switch r {
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
- p.Increment = p.Increment*10 + uint32(r-'0')
- p.IncrementScale++
- p.MinFractionDigits++
- p.MaxFractionDigits++
- case '#':
- p.MaxFractionDigits++
- case 'E':
- if p.leadingSharps > 0 {
- p.MaxIntegerDigits = uint8(p.leadingSharps) + p.MinIntegerDigits
- }
- return p.exponent
- default:
- return nil
- }
- return p.fraction
-}
-
-func (p *parser) exponent(r rune) state {
- switch r {
- case '+':
- // Set mode and check it wasn't already set.
- if p.Flags&AlwaysExpSign != 0 || p.MinExponentDigits > 0 {
- break
- }
- p.Flags |= AlwaysExpSign
- p.doNotTerminate = true
- return p.exponent
- case '0':
- p.MinExponentDigits++
- return p.exponent
- }
- // termination condition
- if p.MinExponentDigits == 0 {
- p.setError(errors.New("format: need at least one digit"))
- }
- return nil
-}
diff --git a/vendor/golang.org/x/text/internal/number/roundingmode_string.go b/vendor/golang.org/x/text/internal/number/roundingmode_string.go
deleted file mode 100644
index bcc2247..0000000
--- a/vendor/golang.org/x/text/internal/number/roundingmode_string.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Code generated by "stringer -type RoundingMode"; DO NOT EDIT.
-
-package number
-
-import "strconv"
-
-func _() {
- // An "invalid array index" compiler error signifies that the constant values have changed.
- // Re-run the stringer command to generate them again.
- var x [1]struct{}
- _ = x[ToNearestEven-0]
- _ = x[ToNearestZero-1]
- _ = x[ToNearestAway-2]
- _ = x[ToPositiveInf-3]
- _ = x[ToNegativeInf-4]
- _ = x[ToZero-5]
- _ = x[AwayFromZero-6]
- _ = x[numModes-7]
-}
-
-const _RoundingMode_name = "ToNearestEvenToNearestZeroToNearestAwayToPositiveInfToNegativeInfToZeroAwayFromZeronumModes"
-
-var _RoundingMode_index = [...]uint8{0, 13, 26, 39, 52, 65, 71, 83, 91}
-
-func (i RoundingMode) String() string {
- if i >= RoundingMode(len(_RoundingMode_index)-1) {
- return "RoundingMode(" + strconv.FormatInt(int64(i), 10) + ")"
- }
- return _RoundingMode_name[_RoundingMode_index[i]:_RoundingMode_index[i+1]]
-}
diff --git a/vendor/golang.org/x/text/internal/number/tables.go b/vendor/golang.org/x/text/internal/number/tables.go
deleted file mode 100644
index 8efce81..0000000
--- a/vendor/golang.org/x/text/internal/number/tables.go
+++ /dev/null
@@ -1,1219 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package number
-
-import "golang.org/x/text/internal/stringset"
-
-// CLDRVersion is the CLDR version from which the tables in this package are derived.
-const CLDRVersion = "32"
-
-var numSysData = []systemData{ // 59 elements
- 0: {id: 0x0, digitSize: 0x1, zero: [4]uint8{0x30, 0x0, 0x0, 0x0}},
- 1: {id: 0x1, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9e, 0xa5, 0x90}},
- 2: {id: 0x2, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x9c, 0xb0}},
- 3: {id: 0x3, digitSize: 0x2, zero: [4]uint8{0xd9, 0xa0, 0x0, 0x0}},
- 4: {id: 0x4, digitSize: 0x2, zero: [4]uint8{0xdb, 0xb0, 0x0, 0x0}},
- 5: {id: 0x5, digitSize: 0x3, zero: [4]uint8{0xe1, 0xad, 0x90, 0x0}},
- 6: {id: 0x6, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa7, 0xa6, 0x0}},
- 7: {id: 0x7, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0xb1, 0x90}},
- 8: {id: 0x8, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x81, 0xa6}},
- 9: {id: 0x9, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x84, 0xb6}},
- 10: {id: 0xa, digitSize: 0x3, zero: [4]uint8{0xea, 0xa9, 0x90, 0x0}},
- 11: {id: 0xb, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa5, 0xa6, 0x0}},
- 12: {id: 0xc, digitSize: 0x3, zero: [4]uint8{0xef, 0xbc, 0x90, 0x0}},
- 13: {id: 0xd, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0xb5, 0x90}},
- 14: {id: 0xe, digitSize: 0x3, zero: [4]uint8{0xe0, 0xab, 0xa6, 0x0}},
- 15: {id: 0xf, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa9, 0xa6, 0x0}},
- 16: {id: 0x10, digitSize: 0x4, zero: [4]uint8{0xf0, 0x96, 0xad, 0x90}},
- 17: {id: 0x11, digitSize: 0x3, zero: [4]uint8{0xea, 0xa7, 0x90, 0x0}},
- 18: {id: 0x12, digitSize: 0x3, zero: [4]uint8{0xea, 0xa4, 0x80, 0x0}},
- 19: {id: 0x13, digitSize: 0x3, zero: [4]uint8{0xe1, 0x9f, 0xa0, 0x0}},
- 20: {id: 0x14, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb3, 0xa6, 0x0}},
- 21: {id: 0x15, digitSize: 0x3, zero: [4]uint8{0xe1, 0xaa, 0x80, 0x0}},
- 22: {id: 0x16, digitSize: 0x3, zero: [4]uint8{0xe1, 0xaa, 0x90, 0x0}},
- 23: {id: 0x17, digitSize: 0x3, zero: [4]uint8{0xe0, 0xbb, 0x90, 0x0}},
- 24: {id: 0x18, digitSize: 0x3, zero: [4]uint8{0xe1, 0xb1, 0x80, 0x0}},
- 25: {id: 0x19, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa5, 0x86, 0x0}},
- 26: {id: 0x1a, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0x8e}},
- 27: {id: 0x1b, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0x98}},
- 28: {id: 0x1c, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xb6}},
- 29: {id: 0x1d, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xac}},
- 30: {id: 0x1e, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xa2}},
- 31: {id: 0x1f, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb5, 0xa6, 0x0}},
- 32: {id: 0x20, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x99, 0x90}},
- 33: {id: 0x21, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa0, 0x90, 0x0}},
- 34: {id: 0x22, digitSize: 0x4, zero: [4]uint8{0xf0, 0x96, 0xa9, 0xa0}},
- 35: {id: 0x23, digitSize: 0x3, zero: [4]uint8{0xea, 0xaf, 0xb0, 0x0}},
- 36: {id: 0x24, digitSize: 0x3, zero: [4]uint8{0xe1, 0x81, 0x80, 0x0}},
- 37: {id: 0x25, digitSize: 0x3, zero: [4]uint8{0xe1, 0x82, 0x90, 0x0}},
- 38: {id: 0x26, digitSize: 0x3, zero: [4]uint8{0xea, 0xa7, 0xb0, 0x0}},
- 39: {id: 0x27, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x91, 0x90}},
- 40: {id: 0x28, digitSize: 0x2, zero: [4]uint8{0xdf, 0x80, 0x0, 0x0}},
- 41: {id: 0x29, digitSize: 0x3, zero: [4]uint8{0xe1, 0xb1, 0x90, 0x0}},
- 42: {id: 0x2a, digitSize: 0x3, zero: [4]uint8{0xe0, 0xad, 0xa6, 0x0}},
- 43: {id: 0x2b, digitSize: 0x4, zero: [4]uint8{0xf0, 0x90, 0x92, 0xa0}},
- 44: {id: 0x2c, digitSize: 0x3, zero: [4]uint8{0xea, 0xa3, 0x90, 0x0}},
- 45: {id: 0x2d, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x87, 0x90}},
- 46: {id: 0x2e, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x8b, 0xb0}},
- 47: {id: 0x2f, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb7, 0xa6, 0x0}},
- 48: {id: 0x30, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x83, 0xb0}},
- 49: {id: 0x31, digitSize: 0x3, zero: [4]uint8{0xe1, 0xae, 0xb0, 0x0}},
- 50: {id: 0x32, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x9b, 0x80}},
- 51: {id: 0x33, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa7, 0x90, 0x0}},
- 52: {id: 0x34, digitSize: 0x3, zero: [4]uint8{0xe0, 0xaf, 0xa6, 0x0}},
- 53: {id: 0x35, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb1, 0xa6, 0x0}},
- 54: {id: 0x36, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb9, 0x90, 0x0}},
- 55: {id: 0x37, digitSize: 0x3, zero: [4]uint8{0xe0, 0xbc, 0xa0, 0x0}},
- 56: {id: 0x38, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x93, 0x90}},
- 57: {id: 0x39, digitSize: 0x3, zero: [4]uint8{0xea, 0x98, 0xa0, 0x0}},
- 58: {id: 0x3a, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0xa3, 0xa0}},
-} // Size: 378 bytes
-
-const (
- numAdlm = 0x1
- numAhom = 0x2
- numArab = 0x3
- numArabext = 0x4
- numArmn = 0x3b
- numArmnlow = 0x3c
- numBali = 0x5
- numBeng = 0x6
- numBhks = 0x7
- numBrah = 0x8
- numCakm = 0x9
- numCham = 0xa
- numCyrl = 0x3d
- numDeva = 0xb
- numEthi = 0x3e
- numFullwide = 0xc
- numGeor = 0x3f
- numGonm = 0xd
- numGrek = 0x40
- numGreklow = 0x41
- numGujr = 0xe
- numGuru = 0xf
- numHanidays = 0x42
- numHanidec = 0x43
- numHans = 0x44
- numHansfin = 0x45
- numHant = 0x46
- numHantfin = 0x47
- numHebr = 0x48
- numHmng = 0x10
- numJava = 0x11
- numJpan = 0x49
- numJpanfin = 0x4a
- numKali = 0x12
- numKhmr = 0x13
- numKnda = 0x14
- numLana = 0x15
- numLanatham = 0x16
- numLaoo = 0x17
- numLatn = 0x0
- numLepc = 0x18
- numLimb = 0x19
- numMathbold = 0x1a
- numMathdbl = 0x1b
- numMathmono = 0x1c
- numMathsanb = 0x1d
- numMathsans = 0x1e
- numMlym = 0x1f
- numModi = 0x20
- numMong = 0x21
- numMroo = 0x22
- numMtei = 0x23
- numMymr = 0x24
- numMymrshan = 0x25
- numMymrtlng = 0x26
- numNewa = 0x27
- numNkoo = 0x28
- numOlck = 0x29
- numOrya = 0x2a
- numOsma = 0x2b
- numRoman = 0x4b
- numRomanlow = 0x4c
- numSaur = 0x2c
- numShrd = 0x2d
- numSind = 0x2e
- numSinh = 0x2f
- numSora = 0x30
- numSund = 0x31
- numTakr = 0x32
- numTalu = 0x33
- numTaml = 0x4d
- numTamldec = 0x34
- numTelu = 0x35
- numThai = 0x36
- numTibt = 0x37
- numTirh = 0x38
- numVaii = 0x39
- numWara = 0x3a
- numNumberSystems
-)
-
-var systemMap = map[string]system{
- "adlm": numAdlm,
- "ahom": numAhom,
- "arab": numArab,
- "arabext": numArabext,
- "armn": numArmn,
- "armnlow": numArmnlow,
- "bali": numBali,
- "beng": numBeng,
- "bhks": numBhks,
- "brah": numBrah,
- "cakm": numCakm,
- "cham": numCham,
- "cyrl": numCyrl,
- "deva": numDeva,
- "ethi": numEthi,
- "fullwide": numFullwide,
- "geor": numGeor,
- "gonm": numGonm,
- "grek": numGrek,
- "greklow": numGreklow,
- "gujr": numGujr,
- "guru": numGuru,
- "hanidays": numHanidays,
- "hanidec": numHanidec,
- "hans": numHans,
- "hansfin": numHansfin,
- "hant": numHant,
- "hantfin": numHantfin,
- "hebr": numHebr,
- "hmng": numHmng,
- "java": numJava,
- "jpan": numJpan,
- "jpanfin": numJpanfin,
- "kali": numKali,
- "khmr": numKhmr,
- "knda": numKnda,
- "lana": numLana,
- "lanatham": numLanatham,
- "laoo": numLaoo,
- "latn": numLatn,
- "lepc": numLepc,
- "limb": numLimb,
- "mathbold": numMathbold,
- "mathdbl": numMathdbl,
- "mathmono": numMathmono,
- "mathsanb": numMathsanb,
- "mathsans": numMathsans,
- "mlym": numMlym,
- "modi": numModi,
- "mong": numMong,
- "mroo": numMroo,
- "mtei": numMtei,
- "mymr": numMymr,
- "mymrshan": numMymrshan,
- "mymrtlng": numMymrtlng,
- "newa": numNewa,
- "nkoo": numNkoo,
- "olck": numOlck,
- "orya": numOrya,
- "osma": numOsma,
- "roman": numRoman,
- "romanlow": numRomanlow,
- "saur": numSaur,
- "shrd": numShrd,
- "sind": numSind,
- "sinh": numSinh,
- "sora": numSora,
- "sund": numSund,
- "takr": numTakr,
- "talu": numTalu,
- "taml": numTaml,
- "tamldec": numTamldec,
- "telu": numTelu,
- "thai": numThai,
- "tibt": numTibt,
- "tirh": numTirh,
- "vaii": numVaii,
- "wara": numWara,
-}
-
-var symIndex = [][12]uint8{ // 81 elements
- 0: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 1: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 2: [12]uint8{0x0, 0x1, 0x2, 0xd, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0x10, 0xb},
- 3: [12]uint8{0x1, 0x0, 0x2, 0xd, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0x10, 0xb},
- 4: [12]uint8{0x0, 0x1, 0x2, 0x11, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0x10, 0xb},
- 5: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x12, 0xb},
- 6: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 7: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x13, 0xb},
- 8: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 9: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0},
- 10: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x14, 0x8, 0x9, 0xa, 0xb},
- 11: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x14, 0x8, 0x9, 0xa, 0xb},
- 12: [12]uint8{0x0, 0x15, 0x2, 0x3, 0x4, 0x5, 0x6, 0x14, 0x8, 0x9, 0xa, 0xb},
- 13: [12]uint8{0x0, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 14: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x16, 0xb},
- 15: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb},
- 16: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0x0},
- 17: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb},
- 18: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0},
- 19: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x18, 0x7, 0x8, 0x9, 0xa, 0xb},
- 20: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x19, 0x1a, 0xa, 0xb},
- 21: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 22: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x7, 0x8, 0x9, 0xa, 0xb},
- 23: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 24: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0x1c, 0x6, 0x7, 0x8, 0x9, 0x1d, 0xb},
- 25: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0x1e, 0x0},
- 26: [12]uint8{0x0, 0x15, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 27: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 28: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x1f, 0xb},
- 29: [12]uint8{0x0, 0x15, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 30: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x20, 0xb},
- 31: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x21, 0x7, 0x8, 0x9, 0x22, 0xb},
- 32: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x23, 0xb},
- 33: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x14, 0x8, 0x9, 0x24, 0xb},
- 34: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x7, 0x8, 0x9, 0x24, 0xb},
- 35: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x25, 0xb},
- 36: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x26, 0xb},
- 37: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x27, 0xb},
- 38: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x28, 0xb},
- 39: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x29, 0xb},
- 40: [12]uint8{0x1, 0x0, 0x2, 0x3, 0xe, 0x1c, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 41: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2a, 0xb},
- 42: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2b, 0xb},
- 43: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x2c, 0x14, 0x8, 0x9, 0x24, 0xb},
- 44: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0},
- 45: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb},
- 46: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x1b, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb},
- 47: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2d, 0x0},
- 48: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2e, 0xb},
- 49: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2f, 0xb},
- 50: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x30, 0x7, 0x8, 0x9, 0xa, 0xb},
- 51: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x31, 0xb},
- 52: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x32, 0xb},
- 53: [12]uint8{0x1, 0x15, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb},
- 54: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x33, 0xb},
- 55: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x34, 0xb},
- 56: [12]uint8{0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x7, 0x3c, 0x9, 0xa, 0xb},
- 57: [12]uint8{0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x7, 0x3c, 0x9, 0x3d, 0xb},
- 58: [12]uint8{0x35, 0x36, 0x37, 0x11, 0x3e, 0x3f, 0x3b, 0x7, 0x3c, 0x9, 0xa, 0xb},
- 59: [12]uint8{0x35, 0x36, 0x37, 0x11, 0x39, 0x3a, 0x3b, 0x7, 0x3c, 0x9, 0xa, 0xb},
- 60: [12]uint8{0x35, 0x36, 0x37, 0x11, 0x39, 0x40, 0x3b, 0x7, 0x3c, 0x9, 0xa, 0xb},
- 61: [12]uint8{0x35, 0x36, 0x37, 0x41, 0x3e, 0x3f, 0x3b, 0x7, 0x3c, 0x9, 0xa, 0xb},
- 62: [12]uint8{0x35, 0x36, 0x37, 0x38, 0x3e, 0x3f, 0x3b, 0x7, 0x3c, 0x9, 0xa, 0xb},
- 63: [12]uint8{0x35, 0xc, 0x37, 0x38, 0x39, 0x42, 0x3b, 0x7, 0x3c, 0x9, 0xa, 0x0},
- 64: [12]uint8{0x35, 0xc, 0x37, 0x38, 0x39, 0x42, 0x43, 0x7, 0x44, 0x9, 0x24, 0xb},
- 65: [12]uint8{0x35, 0x36, 0x37, 0x38, 0x39, 0x5, 0x3b, 0x7, 0x3c, 0x9, 0x33, 0xb},
- 66: [12]uint8{0x35, 0x36, 0x37, 0x11, 0x45, 0x46, 0x43, 0x7, 0x3c, 0x9, 0xa, 0x35},
- 67: [12]uint8{0x35, 0x36, 0x37, 0x11, 0xe, 0x1c, 0x43, 0x7, 0x3c, 0x9, 0x1d, 0xb},
- 68: [12]uint8{0x35, 0x36, 0x37, 0x11, 0xe, 0x1c, 0x43, 0x7, 0x3c, 0x9, 0xa, 0x35},
- 69: [12]uint8{0x35, 0x36, 0x37, 0x11, 0x45, 0x5, 0x43, 0x7, 0x3c, 0x9, 0xa, 0x35},
- 70: [12]uint8{0x1, 0xc, 0x37, 0x11, 0x45, 0x47, 0x43, 0x7, 0x3c, 0x9, 0xa, 0x0},
- 71: [12]uint8{0x35, 0x1, 0x37, 0x11, 0x4, 0x5, 0x43, 0x7, 0x3c, 0x9, 0xa, 0x35},
- 72: [12]uint8{0x1, 0xc, 0x37, 0x11, 0x45, 0x47, 0x43, 0x7, 0x3c, 0x9, 0x24, 0xb},
- 73: [12]uint8{0x35, 0x36, 0x2, 0x3, 0x45, 0x46, 0x43, 0x7, 0x8, 0x9, 0xa, 0x35},
- 74: [12]uint8{0x35, 0x36, 0x37, 0x11, 0x4, 0x5, 0x43, 0x7, 0x3c, 0x9, 0x31, 0x35},
- 75: [12]uint8{0x35, 0x36, 0x37, 0x11, 0x4, 0x5, 0x43, 0x7, 0x3c, 0x9, 0x32, 0x35},
- 76: [12]uint8{0x35, 0x36, 0x37, 0x11, 0x48, 0x46, 0x43, 0x7, 0x3c, 0x9, 0x33, 0x35},
- 77: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x49},
- 78: [12]uint8{0x0, 0x1, 0x4a, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x28, 0xb},
- 79: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x4b, 0xb},
- 80: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x4c, 0x4d, 0xb},
-} // Size: 996 bytes
-
-var symData = stringset.Set{
- Data: "" + // Size: 599 bytes
- ".,;%+-E׉∞NaN:\u00a0\u200e%\u200e\u200e+\u200e-ليس\u00a0رقمًا٪NDТерхьаш" +
- "\u00a0дац·’mnne×10^0/00INF−\u200e−ناعددepälukuՈչԹარ\u00a0არის\u00a0რიცხვ" +
- "იZMdMсан\u00a0емес¤¤¤сан\u00a0эмесບໍ່\u200bແມ່ນ\u200bໂຕ\u200bເລກNSဂဏန်" +
- "းမဟုတ်သောННне\u00a0числочыыһыла\u00a0буотах·10^epilohosan\u00a0dälTFЕs" +
- "on\u00a0emasҳақиқий\u00a0сон\u00a0эмас非數值非数值٫٬؛٪\u061c\u061c+\u061c-اس؉ل" +
- "يس\u00a0رقم\u200f+\u200f-\u200f−٪\u200f\u061c−×۱۰^؉\u200f\u200e+\u200e" +
- "\u200e-\u200e\u200e−\u200e+\u200e:၊ཨང་མེན་གྲངས་མེདཨང་མད",
- Index: []uint16{ // 79 elements
- // Entry 0 - 3F
- 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
- 0x0009, 0x000c, 0x000f, 0x0012, 0x0013, 0x0015, 0x001c, 0x0020,
- 0x0024, 0x0036, 0x0038, 0x003a, 0x0050, 0x0052, 0x0055, 0x0058,
- 0x0059, 0x005e, 0x0062, 0x0065, 0x0068, 0x006e, 0x0078, 0x0080,
- 0x0086, 0x00ae, 0x00af, 0x00b2, 0x00c2, 0x00c8, 0x00d8, 0x0105,
- 0x0107, 0x012e, 0x0132, 0x0142, 0x015e, 0x0163, 0x016a, 0x0173,
- 0x0175, 0x0177, 0x0180, 0x01a0, 0x01a9, 0x01b2, 0x01b4, 0x01b6,
- 0x01b8, 0x01bc, 0x01bf, 0x01c2, 0x01c6, 0x01c8, 0x01d6, 0x01da,
- // Entry 40 - 7F
- 0x01de, 0x01e4, 0x01e9, 0x01ee, 0x01f5, 0x01fa, 0x0201, 0x0208,
- 0x0211, 0x0215, 0x0218, 0x021b, 0x0230, 0x0248, 0x0257,
- },
-} // Size: 797 bytes
-
-// langToDefaults maps a compact language index to the default numbering system
-// and default symbol set
-var langToDefaults = [775]symOffset{
- // Entry 0 - 3F
- 0x8000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x8003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0003,
- 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
- 0x0003, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0002, 0x0004,
- 0x0002, 0x0004, 0x0002, 0x0002, 0x0002, 0x0003, 0x0002, 0x0000,
- 0x8005, 0x0000, 0x0000, 0x0000, 0x8006, 0x0005, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x8009, 0x0000, 0x0000, 0x800a, 0x0000, 0x0000, 0x800c, 0x0001,
- 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x800e, 0x0000, 0x0000, 0x0007,
- 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x800f, 0x0008, 0x0008,
- 0x8011, 0x0001, 0x0001, 0x0001, 0x803c, 0x0000, 0x0009, 0x0009,
- 0x0009, 0x0000, 0x0000, 0x000a, 0x000b, 0x000a, 0x000c, 0x000a,
- 0x000a, 0x000c, 0x000a, 0x000d, 0x000d, 0x000a, 0x000a, 0x0001,
- 0x0001, 0x0000, 0x0001, 0x0001, 0x803f, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x000e, 0x000e, 0x000e, 0x000f, 0x000f, 0x000f, 0x0000, 0x0000,
- 0x0006, 0x0000, 0x0000, 0x0000, 0x000a, 0x0010, 0x0000, 0x0006,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0011, 0x0000, 0x000a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0000, 0x0009, 0x0000,
- 0x0000, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0000,
- 0x0000, 0x000f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0015,
- 0x0015, 0x0006, 0x0000, 0x0006, 0x0006, 0x0000, 0x0000, 0x0006,
- 0x0006, 0x0001, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006,
- 0x0000, 0x0006, 0x0000, 0x0000, 0x0006, 0x0006, 0x0016, 0x0016,
- 0x0017, 0x0017, 0x0001, 0x0001, 0x8041, 0x0018, 0x0018, 0x0001,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0019, 0x0019, 0x0000, 0x0000,
- 0x0017, 0x0017, 0x0017, 0x8044, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0006, 0x0006, 0x0001, 0x0001, 0x0001, 0x0001,
- // Entry 140 - 17F
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000,
- 0x8047, 0x0000, 0x0006, 0x0006, 0x001a, 0x001a, 0x001a, 0x001a,
- 0x804a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x804c, 0x001b, 0x0000,
- 0x0000, 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x0001, 0x0001,
- 0x001c, 0x001c, 0x0009, 0x0009, 0x804f, 0x0000, 0x0000, 0x0000,
- // Entry 180 - 1BF
- 0x0000, 0x0000, 0x8052, 0x0006, 0x0006, 0x001d, 0x0006, 0x0006,
- 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001e, 0x001e, 0x001f,
- 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,
- 0x0001, 0x000d, 0x000d, 0x0000, 0x0000, 0x0020, 0x0020, 0x0006,
- 0x0006, 0x0021, 0x0021, 0x0000, 0x0000, 0x0006, 0x0006, 0x0000,
- 0x0000, 0x8054, 0x0000, 0x0000, 0x0000, 0x0000, 0x8056, 0x001b,
- 0x0000, 0x0000, 0x0001, 0x0001, 0x0022, 0x0022, 0x0000, 0x0000,
- // Entry 1C0 - 1FF
- 0x0000, 0x0023, 0x0023, 0x0000, 0x0000, 0x0006, 0x0006, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0024, 0x0024, 0x8058, 0x0000, 0x0000, 0x0016, 0x0016, 0x0006,
- 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0025, 0x0025, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x000d, 0x0000, 0x0000,
- 0x0006, 0x0006, 0x0000, 0x0000, 0x0006, 0x0006, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x805a, 0x0000, 0x0000, 0x0006, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x805b, 0x0026, 0x805d,
- // Entry 200 - 23F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x805e, 0x0015, 0x0015, 0x0000,
- 0x0000, 0x0006, 0x0006, 0x0006, 0x8061, 0x0000, 0x0000, 0x8062,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0001,
- 0x0001, 0x0015, 0x0015, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0027, 0x0027, 0x0027, 0x8065, 0x8067,
- 0x001b, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x8069, 0x0028, 0x0006, 0x0001, 0x0006, 0x0001, 0x0001, 0x0001,
- // Entry 240 - 27F
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,
- 0x0006, 0x0000, 0x0000, 0x001a, 0x001a, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0000, 0x0000, 0x0029, 0x0029, 0x0029, 0x0029,
- 0x0029, 0x0029, 0x0029, 0x0006, 0x0006, 0x0000, 0x0000, 0x002a,
- 0x002a, 0x0000, 0x0000, 0x0000, 0x0000, 0x806b, 0x0000, 0x0000,
- 0x002b, 0x002b, 0x002b, 0x002b, 0x0006, 0x0006, 0x000d, 0x000d,
- 0x0006, 0x0006, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x002c, 0x002c, 0x002d, 0x002d, 0x002e, 0x002e, 0x0000, 0x0000,
- // Entry 280 - 2BF
- 0x0000, 0x002f, 0x002f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x806d, 0x0022, 0x0022,
- 0x0022, 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0030, 0x0030, 0x0000, 0x0000, 0x8071, 0x0031, 0x0006,
- // Entry 2C0 - 2FF
- 0x0006, 0x0006, 0x0000, 0x0001, 0x0001, 0x000d, 0x000d, 0x0001,
- 0x0001, 0x0000, 0x0000, 0x0032, 0x0032, 0x8074, 0x8076, 0x001b,
- 0x8077, 0x8079, 0x0028, 0x807b, 0x0034, 0x0033, 0x0033, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0035, 0x0035, 0x0006, 0x0006,
- 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0036, 0x0037, 0x0037, 0x0036, 0x0036, 0x0001,
- 0x0001, 0x807d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8080,
- // Entry 300 - 33F
- 0x0036, 0x0036, 0x0036, 0x0000, 0x0000, 0x0006, 0x0014,
-} // Size: 1550 bytes
-
-// langToAlt is a list of numbering system and symbol set pairs, sorted and
-// marked by compact language index.
-var langToAlt = []altSymData{ // 131 elements
- 1: {compactTag: 0x0, symIndex: 0x38, system: 0x3},
- 2: {compactTag: 0x0, symIndex: 0x42, system: 0x4},
- 3: {compactTag: 0xa, symIndex: 0x39, system: 0x3},
- 4: {compactTag: 0xa, symIndex: 0x2, system: 0x0},
- 5: {compactTag: 0x28, symIndex: 0x0, system: 0x6},
- 6: {compactTag: 0x2c, symIndex: 0x5, system: 0x0},
- 7: {compactTag: 0x2c, symIndex: 0x3a, system: 0x3},
- 8: {compactTag: 0x2c, symIndex: 0x42, system: 0x4},
- 9: {compactTag: 0x40, symIndex: 0x0, system: 0x6},
- 10: {compactTag: 0x43, symIndex: 0x0, system: 0x0},
- 11: {compactTag: 0x43, symIndex: 0x4f, system: 0x37},
- 12: {compactTag: 0x46, symIndex: 0x1, system: 0x0},
- 13: {compactTag: 0x46, symIndex: 0x38, system: 0x3},
- 14: {compactTag: 0x54, symIndex: 0x0, system: 0x9},
- 15: {compactTag: 0x5d, symIndex: 0x3a, system: 0x3},
- 16: {compactTag: 0x5d, symIndex: 0x8, system: 0x0},
- 17: {compactTag: 0x60, symIndex: 0x1, system: 0x0},
- 18: {compactTag: 0x60, symIndex: 0x38, system: 0x3},
- 19: {compactTag: 0x60, symIndex: 0x42, system: 0x4},
- 20: {compactTag: 0x60, symIndex: 0x0, system: 0x5},
- 21: {compactTag: 0x60, symIndex: 0x0, system: 0x6},
- 22: {compactTag: 0x60, symIndex: 0x0, system: 0x8},
- 23: {compactTag: 0x60, symIndex: 0x0, system: 0x9},
- 24: {compactTag: 0x60, symIndex: 0x0, system: 0xa},
- 25: {compactTag: 0x60, symIndex: 0x0, system: 0xb},
- 26: {compactTag: 0x60, symIndex: 0x0, system: 0xc},
- 27: {compactTag: 0x60, symIndex: 0x0, system: 0xd},
- 28: {compactTag: 0x60, symIndex: 0x0, system: 0xe},
- 29: {compactTag: 0x60, symIndex: 0x0, system: 0xf},
- 30: {compactTag: 0x60, symIndex: 0x0, system: 0x11},
- 31: {compactTag: 0x60, symIndex: 0x0, system: 0x12},
- 32: {compactTag: 0x60, symIndex: 0x0, system: 0x13},
- 33: {compactTag: 0x60, symIndex: 0x0, system: 0x14},
- 34: {compactTag: 0x60, symIndex: 0x0, system: 0x15},
- 35: {compactTag: 0x60, symIndex: 0x0, system: 0x16},
- 36: {compactTag: 0x60, symIndex: 0x0, system: 0x17},
- 37: {compactTag: 0x60, symIndex: 0x0, system: 0x18},
- 38: {compactTag: 0x60, symIndex: 0x0, system: 0x19},
- 39: {compactTag: 0x60, symIndex: 0x0, system: 0x1f},
- 40: {compactTag: 0x60, symIndex: 0x0, system: 0x21},
- 41: {compactTag: 0x60, symIndex: 0x0, system: 0x23},
- 42: {compactTag: 0x60, symIndex: 0x0, system: 0x24},
- 43: {compactTag: 0x60, symIndex: 0x0, system: 0x25},
- 44: {compactTag: 0x60, symIndex: 0x0, system: 0x28},
- 45: {compactTag: 0x60, symIndex: 0x0, system: 0x29},
- 46: {compactTag: 0x60, symIndex: 0x0, system: 0x2a},
- 47: {compactTag: 0x60, symIndex: 0x0, system: 0x2b},
- 48: {compactTag: 0x60, symIndex: 0x0, system: 0x2c},
- 49: {compactTag: 0x60, symIndex: 0x0, system: 0x2d},
- 50: {compactTag: 0x60, symIndex: 0x0, system: 0x30},
- 51: {compactTag: 0x60, symIndex: 0x0, system: 0x31},
- 52: {compactTag: 0x60, symIndex: 0x0, system: 0x32},
- 53: {compactTag: 0x60, symIndex: 0x0, system: 0x33},
- 54: {compactTag: 0x60, symIndex: 0x0, system: 0x34},
- 55: {compactTag: 0x60, symIndex: 0x0, system: 0x35},
- 56: {compactTag: 0x60, symIndex: 0x0, system: 0x36},
- 57: {compactTag: 0x60, symIndex: 0x0, system: 0x37},
- 58: {compactTag: 0x60, symIndex: 0x0, system: 0x39},
- 59: {compactTag: 0x60, symIndex: 0x0, system: 0x43},
- 60: {compactTag: 0x64, symIndex: 0x0, system: 0x0},
- 61: {compactTag: 0x64, symIndex: 0x38, system: 0x3},
- 62: {compactTag: 0x64, symIndex: 0x42, system: 0x4},
- 63: {compactTag: 0x7c, symIndex: 0x50, system: 0x37},
- 64: {compactTag: 0x7c, symIndex: 0x0, system: 0x0},
- 65: {compactTag: 0x114, symIndex: 0x43, system: 0x4},
- 66: {compactTag: 0x114, symIndex: 0x18, system: 0x0},
- 67: {compactTag: 0x114, symIndex: 0x3b, system: 0x3},
- 68: {compactTag: 0x123, symIndex: 0x1, system: 0x0},
- 69: {compactTag: 0x123, symIndex: 0x3c, system: 0x3},
- 70: {compactTag: 0x123, symIndex: 0x44, system: 0x4},
- 71: {compactTag: 0x158, symIndex: 0x0, system: 0x0},
- 72: {compactTag: 0x158, symIndex: 0x3b, system: 0x3},
- 73: {compactTag: 0x158, symIndex: 0x45, system: 0x4},
- 74: {compactTag: 0x160, symIndex: 0x0, system: 0x0},
- 75: {compactTag: 0x160, symIndex: 0x38, system: 0x3},
- 76: {compactTag: 0x16d, symIndex: 0x1b, system: 0x0},
- 77: {compactTag: 0x16d, symIndex: 0x0, system: 0x9},
- 78: {compactTag: 0x16d, symIndex: 0x0, system: 0xa},
- 79: {compactTag: 0x17c, symIndex: 0x0, system: 0x0},
- 80: {compactTag: 0x17c, symIndex: 0x3d, system: 0x3},
- 81: {compactTag: 0x17c, symIndex: 0x42, system: 0x4},
- 82: {compactTag: 0x182, symIndex: 0x6, system: 0x0},
- 83: {compactTag: 0x182, symIndex: 0x38, system: 0x3},
- 84: {compactTag: 0x1b1, symIndex: 0x0, system: 0x0},
- 85: {compactTag: 0x1b1, symIndex: 0x3e, system: 0x3},
- 86: {compactTag: 0x1b6, symIndex: 0x42, system: 0x4},
- 87: {compactTag: 0x1b6, symIndex: 0x1b, system: 0x0},
- 88: {compactTag: 0x1d2, symIndex: 0x42, system: 0x4},
- 89: {compactTag: 0x1d2, symIndex: 0x0, system: 0x0},
- 90: {compactTag: 0x1f3, symIndex: 0x0, system: 0xb},
- 91: {compactTag: 0x1fd, symIndex: 0x4e, system: 0x24},
- 92: {compactTag: 0x1fd, symIndex: 0x26, system: 0x0},
- 93: {compactTag: 0x1ff, symIndex: 0x42, system: 0x4},
- 94: {compactTag: 0x204, symIndex: 0x15, system: 0x0},
- 95: {compactTag: 0x204, symIndex: 0x3f, system: 0x3},
- 96: {compactTag: 0x204, symIndex: 0x46, system: 0x4},
- 97: {compactTag: 0x20c, symIndex: 0x0, system: 0xb},
- 98: {compactTag: 0x20f, symIndex: 0x6, system: 0x0},
- 99: {compactTag: 0x20f, symIndex: 0x38, system: 0x3},
- 100: {compactTag: 0x20f, symIndex: 0x42, system: 0x4},
- 101: {compactTag: 0x22e, symIndex: 0x0, system: 0x0},
- 102: {compactTag: 0x22e, symIndex: 0x47, system: 0x4},
- 103: {compactTag: 0x22f, symIndex: 0x42, system: 0x4},
- 104: {compactTag: 0x22f, symIndex: 0x1b, system: 0x0},
- 105: {compactTag: 0x238, symIndex: 0x42, system: 0x4},
- 106: {compactTag: 0x238, symIndex: 0x28, system: 0x0},
- 107: {compactTag: 0x265, symIndex: 0x38, system: 0x3},
- 108: {compactTag: 0x265, symIndex: 0x0, system: 0x0},
- 109: {compactTag: 0x29d, symIndex: 0x22, system: 0x0},
- 110: {compactTag: 0x29d, symIndex: 0x40, system: 0x3},
- 111: {compactTag: 0x29d, symIndex: 0x48, system: 0x4},
- 112: {compactTag: 0x29d, symIndex: 0x4d, system: 0xc},
- 113: {compactTag: 0x2bd, symIndex: 0x31, system: 0x0},
- 114: {compactTag: 0x2bd, symIndex: 0x3e, system: 0x3},
- 115: {compactTag: 0x2bd, symIndex: 0x42, system: 0x4},
- 116: {compactTag: 0x2cd, symIndex: 0x1b, system: 0x0},
- 117: {compactTag: 0x2cd, symIndex: 0x49, system: 0x4},
- 118: {compactTag: 0x2ce, symIndex: 0x49, system: 0x4},
- 119: {compactTag: 0x2d0, symIndex: 0x33, system: 0x0},
- 120: {compactTag: 0x2d0, symIndex: 0x4a, system: 0x4},
- 121: {compactTag: 0x2d1, symIndex: 0x42, system: 0x4},
- 122: {compactTag: 0x2d1, symIndex: 0x28, system: 0x0},
- 123: {compactTag: 0x2d3, symIndex: 0x34, system: 0x0},
- 124: {compactTag: 0x2d3, symIndex: 0x4b, system: 0x4},
- 125: {compactTag: 0x2f9, symIndex: 0x0, system: 0x0},
- 126: {compactTag: 0x2f9, symIndex: 0x38, system: 0x3},
- 127: {compactTag: 0x2f9, symIndex: 0x42, system: 0x4},
- 128: {compactTag: 0x2ff, symIndex: 0x36, system: 0x0},
- 129: {compactTag: 0x2ff, symIndex: 0x41, system: 0x3},
- 130: {compactTag: 0x2ff, symIndex: 0x4c, system: 0x4},
-} // Size: 810 bytes
-
-var tagToDecimal = []uint8{ // 775 elements
- // Entry 0 - 3F
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 40 - 7F
- 0x05, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, 0x01, 0x01,
- // Entry 80 - BF
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry C0 - FF
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 100 - 13F
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 140 - 17F
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05,
- 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 180 - 1BF
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x05,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 1C0 - 1FF
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05,
- 0x01, 0x01, 0x01, 0x05, 0x05, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 200 - 23F
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, 0x05, 0x01,
- 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 240 - 27F
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 280 - 2BF
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05,
- 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 2C0 - 2FF
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- // Entry 300 - 33F
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08,
-} // Size: 799 bytes
-
-var tagToScientific = []uint8{ // 775 elements
- // Entry 0 - 3F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 40 - 7F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 80 - BF
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry C0 - FF
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 100 - 13F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 140 - 17F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x0c, 0x0c, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0c,
- 0x0c, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 180 - 1BF
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 1C0 - 1FF
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x0d, 0x0d, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x0c, 0x0c, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 200 - 23F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0c, 0x02,
- 0x02, 0x0c, 0x0c, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 240 - 27F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x0d, 0x0d, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 280 - 2BF
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 2C0 - 2FF
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- // Entry 300 - 33F
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x09,
-} // Size: 799 bytes
-
-var tagToPercent = []uint8{ // 775 elements
- // Entry 0 - 3F
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- // Entry 40 - 7F
- 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x03, 0x03,
- 0x06, 0x06, 0x03, 0x04, 0x04, 0x03, 0x03, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x03,
- 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03,
- 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x04, 0x03,
- 0x03, 0x04, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03,
- 0x03, 0x04, 0x04, 0x04, 0x07, 0x07, 0x04, 0x04,
- // Entry 80 - BF
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x03, 0x04, 0x03, 0x04,
- 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- // Entry C0 - FF
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- // Entry 100 - 13F
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
- 0x0b, 0x0b, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- // Entry 140 - 17F
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06,
- 0x06, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- // Entry 180 - 1BF
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06,
- 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04,
- // Entry 1C0 - 1FF
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- // Entry 200 - 23F
- 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x06, 0x06, 0x04, 0x04, 0x04, 0x06, 0x04,
- 0x04, 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- // Entry 240 - 27F
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
- // Entry 280 - 2BF
- 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
- 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06,
- 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x0e,
- // Entry 2C0 - 2FF
- 0x0e, 0x0e, 0x04, 0x03, 0x03, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03,
- 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- // Entry 300 - 33F
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0a,
-} // Size: 799 bytes
-
-var formats = []Pattern{Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x0,
- MinIntegerDigits: 0x0,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x0,
- GroupingSize: [2]uint8{0x0,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 3,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x0,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x9,
- GroupingSize: [2]uint8{0x3,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x0,
- MinIntegerDigits: 0x0,
- MaxIntegerDigits: 0x1,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x1},
- Affix: "",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x3,
- GroupingSize: [2]uint8{0x0,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x2,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "\x00\x03\u00a0%",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x7,
- GroupingSize: [2]uint8{0x3,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x2,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "\x00\x01%",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x6,
- GroupingSize: [2]uint8{0x3,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 3,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x0,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0xc,
- GroupingSize: [2]uint8{0x3,
- 0x2},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x2,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "\x00\x01%",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x9,
- GroupingSize: [2]uint8{0x3,
- 0x2},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x2,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "\x00\x03\u00a0%",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0xa,
- GroupingSize: [2]uint8{0x3,
- 0x2},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 6,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x0,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x8,
- GroupingSize: [2]uint8{0x0,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 6,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x0,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x6,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x3},
- Affix: "",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0xd,
- GroupingSize: [2]uint8{0x0,
- 0x0},
- Flags: 0x4},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x2,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "\x00\x01%",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x2,
- GroupingSize: [2]uint8{0x0,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x2,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "\x03%\u00a0\x00",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x7,
- GroupingSize: [2]uint8{0x3,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x0,
- MinIntegerDigits: 0x0,
- MaxIntegerDigits: 0x1,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x1},
- Affix: "\x01[\x01]",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x5,
- GroupingSize: [2]uint8{0x0,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x0,
- MinIntegerDigits: 0x0,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x1,
- GroupingSize: [2]uint8{0x0,
- 0x0},
- Flags: 0x0},
- Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0,
- MaxFractionDigits: 0,
- Increment: 0x0,
- IncrementScale: 0x0,
- Mode: 0x0,
- DigitShift: 0x2,
- MinIntegerDigits: 0x1,
- MaxIntegerDigits: 0x0,
- MinFractionDigits: 0x0,
- MinSignificantDigits: 0x0,
- MinExponentDigits: 0x0},
- Affix: "\x01%\x00",
- Offset: 0x0,
- NegOffset: 0x0,
- PadRune: 0,
- FormatWidth: 0x6,
- GroupingSize: [2]uint8{0x3,
- 0x0},
- Flags: 0x0}}
-
-// Total table size 8634 bytes (8KiB); checksum: 8F23386D
diff --git a/vendor/golang.org/x/text/internal/stringset/set.go b/vendor/golang.org/x/text/internal/stringset/set.go
deleted file mode 100644
index bb2fffb..0000000
--- a/vendor/golang.org/x/text/internal/stringset/set.go
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2016 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 stringset provides a way to represent a collection of strings
-// compactly.
-package stringset
-
-import "sort"
-
-// A Set holds a collection of strings that can be looked up by an index number.
-type Set struct {
- // These fields are exported to allow for code generation.
-
- Data string
- Index []uint16
-}
-
-// Elem returns the string with index i. It panics if i is out of range.
-func (s *Set) Elem(i int) string {
- return s.Data[s.Index[i]:s.Index[i+1]]
-}
-
-// Len returns the number of strings in the set.
-func (s *Set) Len() int {
- return len(s.Index) - 1
-}
-
-// Search returns the index of the given string or -1 if it is not in the set.
-// The Set must have been created with strings in sorted order.
-func Search(s *Set, str string) int {
- // TODO: optimize this if it gets used a lot.
- n := len(s.Index) - 1
- p := sort.Search(n, func(i int) bool {
- return s.Elem(i) >= str
- })
- if p == n || str != s.Elem(p) {
- return -1
- }
- return p
-}
-
-// A Builder constructs Sets.
-type Builder struct {
- set Set
- index map[string]int
-}
-
-// NewBuilder returns a new and initialized Builder.
-func NewBuilder() *Builder {
- return &Builder{
- set: Set{
- Index: []uint16{0},
- },
- index: map[string]int{},
- }
-}
-
-// Set creates the set created so far.
-func (b *Builder) Set() Set {
- return b.set
-}
-
-// Index returns the index for the given string, which must have been added
-// before.
-func (b *Builder) Index(s string) int {
- return b.index[s]
-}
-
-// Add adds a string to the index. Strings that are added by a single Add will
-// be stored together, unless they match an existing string.
-func (b *Builder) Add(ss ...string) {
- // First check if the string already exists.
- for _, s := range ss {
- if _, ok := b.index[s]; ok {
- continue
- }
- b.index[s] = len(b.set.Index) - 1
- b.set.Data += s
- x := len(b.set.Data)
- if x > 0xFFFF {
- panic("Index too > 0xFFFF")
- }
- b.set.Index = append(b.set.Index, uint16(x))
- }
-}
diff --git a/vendor/golang.org/x/text/internal/tag/tag.go b/vendor/golang.org/x/text/internal/tag/tag.go
deleted file mode 100644
index b5d3488..0000000
--- a/vendor/golang.org/x/text/internal/tag/tag.go
+++ /dev/null
@@ -1,100 +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 tag contains functionality handling tags and related data.
-package tag // import "golang.org/x/text/internal/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
-}